質問: sqliteの機能で、データベースをメモリ上に展開するというものがあると思います。 なんとなく興味を惹かれつつも、用途が今ひとつ分かりません。 セオリーや活用場面などあれば、是非教えていただければと思っています。 sqliteをより深く理解し、使いこなしたいという気持ちからの質問です。 自分で勝手に考えたところでは、データベース形式ではないなんらかのデータの処理をする際に、集合的な処理が必要だとかで、sql文を使いたい、というようなものがあるのかもしれないと思いました。 ただパフォーマンス的にどうなのかなど、色々疑問があり、よくわかりません。 教えていただければ幸いです。 ちなみに言語はpythonとセットで使っています。
回答: ### セオリー データベース接続が閉じられるとすぐにデータベースは存在しなくなります。 つまり`データベースは現在の接続に対してのみ存在`します。 加えて、メモリなので`ディスクアクセスに比べて高速`です。 `データが消えても問題ない場面で使用`します。逆に`データが消えて困る場合は使用しない`でください。 ### 活用場面 上記の通り、データを永続的に保持するのではなく、`データを高速に一時的に保持するケースに最適`です。 * ユニットテスト RDBMSを使用するアプリケーションの場合は、一番良く使うケースかと思います。 使用するテストデータは消えても良い、テストに時間をかけたくない、`既存(開発用)データを汚さず、毎回そのテストだけに必要な(新鮮な)データをロードしたい`という思いにベストマッチします。 * 大量データの一時的処理 大量データをフィルタしたりソートしたり、色んな切り口で処理する場合、手動でコーディングするよりもSQLの機能(JOINやOrderBy等)を使った方が、プログラムの柔軟性が向上する場面があります。