私たちのニーズの 1 つは、一時的なメモリ内データベースを作成してから、さまざまな挿入/選択/更新を実行することです。
一見すると、SQLite は私たちのすべてのニーズを満たしています。インメモリ SQLite DB への接続は、次のように簡単に確立できます。
class SQLiteBase < ActiveRecord::Base
self.abstract_class = true
establish_connection(adapter: 'sqlite3', database: ':memory:')
end
少し前に、SQLite テーブルへのデータの一括読み込み (具体的には一括 INSERT) を実行する必要があることが判明したときに、いくつかのパフォーマンスの問題を調査し始めました (これらのベンチマークを参照してください)。
残念ながら、SQLite は一括 INSERT をサポートしていないようです。
バルク INSERT をサポートする SQL ベースの軽量インメモリ データベースは他にありますか?
そのようなものがない場合 – PostreSQL (MySQL またはその他の主要なプレーヤー) などの重いデータベースをインメモリ データベースとして利用する方法はありますか?
postresql/mysql が最適でない場合 – その上にクエリ言語を備えた、C を多用して最適化されたデータ構造が他にありますか? (ルビバインディングあり/なし)。