Данная статья рассчитана на программистов, проявившим интерес к использованию SQL в своих проектах. В статье читателям представляется функциональность SQLite, а также рассматриваются ее преимущества. Статья не требует знание функций SQLite, но минимальные знания SQL приветствуются.
sqlite自体は純粋なデータベースエンジンで、アプリケーションに組み込むためのAPIだ。
APIは.NETを含め、本当に何でも使える。私はGUIを探します - あなたはそれが好きかもしれません)。
https://www.mql5.com/ja/articles/862
ありがとう。この記事の著者は、非常に良い指摘をしている。そしてすべてを台無しにした)。
使える可能性があるのはいいことだ。もうひとつは、SQLiteはシリアスなプロジェクトには使うべきではないということだ。いずれにせよ、私はお勧めしない。私自身、SQLiteの衝突という問題に何度も直面しました。例えば、取引ロボットが異なるチャートにアタッチされているが、同じベースを使っていて、アクセスが1つの汎用テーブル(例えば登録/変更セッション、口座)である場合、どのような場合でも「テーブルがロックされました」のようなエラーが出ます。そして、すべてのトランザクションが完了し、カーソルが閉じられ、データベースが共有モードでオープンされたとしても関係ありません。この問題はSQLiteの開発者にも知られている。
私の意見では、MS AccessはSQLをサポートしたファイルデータベースの中では最高である。スモールソフトの人たちをどんなに叱ろうとも、私はSQLiteからMS Accessに乗り換えたが、まったく後悔していない。Win98でもOleDBドライバJet 4.0がインストールされているので、プロジェクトはすべてのOC Windowsで動作する。
以前にも書きましたが、アクセスは本当に最高で、私もそれを使っています。極端な場合、MS SQL Server、特に今はフリーで配布されているバージョンがある。MySQLはかさばるし、サーバー配布版だけだと450MBもある。
ありがとう。今回の記事の著者の指摘はとてもいい。そしてすべてを台無しにした)。
使える可能性があるのはいいことだ。もうひとつは、SQLiteはシリアスなプロジェクトには使うべきではないということだ。いずれにせよ、私はお勧めしない。私自身、SQLiteの衝突という問題に何度も直面しました。例えば、取引ロボットが異なるチャートに接続されているが、同じベースを使っていて、アドレスが1つの汎用テーブル(例えば、登録/変更セッション、口座)になっている場合、どのような場合でも「テーブルがロックされています」というようなエラーが出ます。そして、すべてのトランザクションが完了し、カーソルが閉じられ、データベースが共有モードでオープンされたとしても関係ありません。この問題はSQLiteの開発者にも知られている。
私の意見では、MS AccessはSQLをサポートしたファイルデータベースの中では最高である。スモールソフトの人たちをどんなに叱ろうとも、私はSQLiteからMS Accessに乗り換えたが、まったく後悔していない。Win98でもOleDBドライバJet 4.0がインストールされているので、プロジェクトはすべてのOC Windowsで動作する。
以前にも書きましたが、アクセスは本当に最高です。極端な場合、MS SQL Server、特に今はフリーで配布されているバージョンがある。
MS Accessは最悪の選択肢のひとつだ。VDS上ではほとんど動かない。同じSQLiteについて言うことができないこと - それは非常に高速です。問題は(MySQLでも他のものでも同じだが)、「1つのExpert Advisor=1つのトレードで、どこかにインジケーター、チャート、ターミナルがある」というモデルだが、簡単に変更できる上に、コードベースのすべてが競争的な作業のために設計されておらず、リソースの独占使用を意味し、必要なブロック、同期などがないことだ。そして、それは変態のセクションからである - 実際のアカウント上で複数のExpert Advisorを実行する(それらが同じインスタンスであっても)。
そして、プラスアルファの信頼性を求めるのであれば、オラクル(あなたは驚くだろうが、ロボットのニーズには無料である)とAPEXを入れて、それへのコネクタを書く。
MQがSQLへの一般化されたコネクタを展開しない限り、DBMSと正しく動作しようとする試みはすべて失敗する運命にある。これは、あるコンポーネントがコミュニティの力によって実現不可能である場合そのものである。
そして、プラスアルファの信頼性を求めるなら、オラクル(驚くだろうが、ロボットのニーズには無料だ)とAPEXを入れて、それにコネクターを書けばいい。もう一つの選択肢は、Web-Requestを通じてRESTモデルでデータをドライブすることだ。
そう、オラクルのことは知っている。オラクルの証明書もいくつか持っている。残念ながら、それらは役に立たない。
アクセスに関しては、それほど遅くはない。私は見積もりをTSに変換するのに使った(接続:ターミナル - ベース - TS)。履歴、現在の相場、状態、ログなどがデータベースに入っている。そして、これはintrade用です。データベースのスピードに不満はありませんでした。
Eugeniy Lugovoyが 述べた理由から、SQLiteは同じような問題には使えないと思います。
ええ、オラクルのことは知っています。証明書もいくつか持っている。残念ながら、それらは役に立たなかった。
アクセスに関しては、それほど遅くはない。私は見積もりをTS(接続:ターミナル-ベース-TS)に変換するのに使った。履歴、現在の相場、状態、ログなどをデータベースに保存。そして、これはintrade用です。データベースのスピードに不満はありませんでした。
Eugeniy Lugovoyが 述べた理由から、SQLiteは同じような問題には使えないと思います。
もし秘密でなければ、アセットからデータを読み出すためにTCでどのようなメカニズムが使われたのでしょうか?
TC - 標準的なC# ADO.NET。Cのバッファ、その更新、データベースへの書き込み。Terminalは(覚えていませんが)ODBCかJet経由でデータベースにデータを書き込みます。ご興味があれば後で調べてみます。Terminalはデータベースへのエクスポートを内蔵しています(ドライバがコンピュータにあれば、どんなものでも)。
追記 OLEDBのようです。
.
皆さん、こんにちは!みんな、長い間ここを見ていなかったね。ここでのディスカッションは本当に熱いね :)私自身のことを説明させてください :)
数年前、私は要件が全く異なるプロジェクト(サードパーティのソフトウェアによる追加的な市場分析、履歴の保存を伴うウェブ上での公開、遺伝的アルゴリズムの 適用、トレードのエミュレーションなど)に携わっていました。要件が異なっていたため、DBMSの選択は対応するものだった。そして最終的に、ODBC/OLEDB ではなく、ネイティブドライバーを使用するために、それぞれの DBMS 用に MT4 RDBMS ドライバーを書くことにしました。例えば、mysqlにはlibmysql、oracleにはOCI/Instant client、SQLiteにはapi付きDLL、しかしMicrosoftデータベース(Access/MS SQL)にはOLEDBオプションしかない。これらはすべて、今までに書かれ、存在している。ここでは、MySQLベースの記事を作成した。なぜなら、私の主観的な意見では、ポストソビエト空間ではMySQLの方がまだ近いからだ。
一般的に、私はデータベースで十分に長く、密に働き、SQLiteの出現、開発、人気は私に影響を与えずにはいられなかった:)私はv3の下でラッパーを書き、別スレッドではすべてOKでした(つまり、1つのチャートがEAを重くするとき)、しかし、いくつかのチャートでテストしたとき、私は予期せずテーブルロックになりました。私は特別に、自分のシンボルによってのみデータ(行)を更新するようにテストEAを書きました。そして、Vrapper自体がミューテックスを使ってオペレーションを実行しているにも関わらず、です。つまり、1つの更新が完了しない限り(+オートコミット)、もう1つの更新は開始されません。フォーラムを検索したところ、確かにそのような問題があることがわかりました。OLEDBでリッパーを書き直し(必要なDBMSのAPIを呼び出すコマンドを除いて、すべてのリッパーの構造はほとんど同じです)、MS Accessでチェックしました。同じスクリプトで問題なし。MS SQL - 問題なし、PostgreSQL - 問題なし、Oracleに接続 - これもすべてOK。
そして、かなり前のことだが、SQLiteの感触は残っていた・・・。それ以上実験することはなかった。似たようなデータベース(SQLでファイル&コンパクト)で覚えているのはMSSQL Compact Editionだけだったが、この方向での実装には手が届かなかった。
MySQL(MariaDBを含む)用とOLEDB用の2つのプロジェクトが残っていますが、ネイティブ・ドライバ(例えば、同じDBMSのOracle)と比べると可能性は制限されますが、プロダクション・プロジェクトを実装するには十分です。この点で、私はソリューションの安定性とパフォーマンス、それにメンテナンスコストの最小化を重視しています。単純化すれば、新しいサブデータベースのシンタックスを考慮してクエリを書き換えるだけでよく、一般的にプロジェクトのロジックは影響を受けません。
ありがとうございました!
せっかく "箱から出してチェック "したのに、うまくいかない。
こんにちは、パベル、
あなたの環境について、以下の情報を提供してください:
- オペレーティング・システムのバージョンとビット数
- ターミナルのバージョン、ビルド、ビット数
- MySQL のバージョン
カーネルに ミューテックスを作成する関数が含まれておらず、libmysqlに操作によって影響を受ける行数を決定する関数が含まれていないのはかなり奇妙です。
同じような環境を作って確認してみます。
win 7 x64 - mt5 x64 最新版 (v5 b1455)
MySQLにアクセスできないのが残念でならない。
サーバー:UNIXソケット経由Localhost
サーバータイプ: Percona Server
サーバーバージョン: 5.5.35-33.0-log - Percona Server (GPL), リリース rel33.0, リビジョン 611
プロトコルバージョン: 10
ユーザー: ***
サーバーのエンコーディング: UTF-8 Unicode (utf8)