.NetのメモリデータベースでSQLを使用するにはどうすればよいですか?インメモリデータベースはどのように機能しますか?
インメモリデータベース(IMDB)は、メモリ常駐のリレーショナルデータベースであり、メインメモリにデータを格納および操作することでディスクアクセスを排除します。 IMDBは通常、厳密なメモリベースのアーキテクチャと直接的なデータ操作を特徴としています。
少し関連するもの:
メモリデータベースを記述するときに修正する必要がある2つの神話があります。
1)「メモリデータベースはディスクデータベースよりも持続性が低い」。これは単純なメモリデータベースには当てはまりますが、エンタープライズレベルのメモリデータベースは、トランザクションをコミットするときにデータをディスクに保護します。ディスクは、ディスクアームが動くときにのみ遅くなります。考えてみると、高速ディスクに数秒でギガバイトを書き込むことができます。また、データベースがそれだけ変化した場合は、リアルタイムで1日あたりテラバイト単位で保護できます。これにより、HANAやStarcounterなどのRAMデータベースはディスクデータベースと同じくらい安全でありながら、非常に高速です。いつでも電源を切ることができ、チェックポイントとリカバリはディスクベースのデータベースと同じように機能します。
2)「メモリデータベースははるかに高速です。」メモリデータベースが高速である理由は、単にメモリ内で動作するためです。従来のデータベースをRAMドライブに配置しても、何も起こりません。実際、最近のキャッシュは一般的にデータベースのサイズを超えるため、すでにメモリに存在しています。メモリデータベースが非常に効率的である理由は、データベースイメージがセカンダリメモリではなくプライマリメモリとして扱われるためです。つまり、最新のRAMデータベースは、データの読み取り時にディスクイメージからRAMにページをコピーしません。最新のサーバーでは、 メモリウォール がすぐにボトルネックになります。これは、RAMデータベースでは回避されます。 2番目の理由は、ディスクよりも数千倍速いメディア用に何かを開発する場合、ナノ秒を消費するものがすぐに見えるため、マイクロ秒やミリ秒でオーバーヘッドを追加しない傾向があるためです。ディスクの規模では、このレベルでコードを最適化する理由はありません。突然RAMの価格が下がると(2000年以降98%)、データベースエンジン全体を書き換えることはできません。
インメモリデータベースは通常のデータベースと同じように機能しますが、コンテンツはディスクではなくメモリに保存されます。これには、アプリケーションのシャットダウン時にすべてのデータが失われるという効果があります。再起動し、各スタートアップでデータを取り込む必要があります。
インメモリモードで実行できるデータベースの例は、 SQLite です。 SQLiteはインプロセスデータベースであり、アプリケーション内でホストすることに注意してください。
MemCached を使用して、分散メモリオブジェクトキャッシュシステムであることができます。 Memcachedは、データベース呼び出し、API呼び出し、またはページレンダリングの結果からの任意のデータ(文字列、オブジェクト)の小さな塊のためのメモリ内のキーと値のストアです。
Memcachedを使用すると、すべてのサーバーが同じ仮想メモリプールを調べていることがわかります。つまり、特定のアイテムは常に保存され、常にWebクラスター全体の同じ場所から取得されます。
Data Provider for .NETを使用したインメモリデータベース にアクセスするためのチュートリアルを次に示します。予測分析、地理空間、テキスト分析、ファジー検索にSQLステートメントを使用できます。このデータベースを無料でダウンロードして(HANA、Express Edition)、8GBを超えるコンピューターの仮想マシンで使用するRAMまたはMS AzureのVMにインストールすることができます。