2016-04-03 4 views
2

私は木の中のいくつかのキーと値のペアをデータストレージとして使う小さなスタンドアロンのLuaツールを書いています。私のプロトタイプはLuaテーブルを使用しています。ただし、テーブルエントリは連続的に変化し、増加します。私にとっては、それはデータベースにすべてのデータを保存するのには良い理由のようです。いくつかのLuaテーブルを小さなデータベースに保管しますか?

多くの小さなツールはSQLiteデータベースに依存していますが、中小サイズのLuaテーブルを保存する場合は、より良い(キー値)ソリューションが必要です。私はSQLでツリーを格納することについて読んだが、一見すると複雑に見える。

データベース内にLuaテーブルを格納して検索するためのソリューションがありますか?クエリ言語と共に使用しますか?KISS

データベースは依然として小さく、永続性があり、並列クエリを処理する必要はありません。パフォーマンスも問題ありません。ツールはシングルユーザーのみです。私はディスク/ファイルベースのDBを好むだろう。理想的には、DBへの更新(クエリ/スクリプト)は、バージョン管理下にあるものとする。

私は(G)dbmを考えていましたが(hereを参照)、新しいエントリを変更したり作成したりする簡単な "スクリプト可能な"方法についてはわかりません。

MongoDBやNeo4jのようなグラフDBのような完全なサーバーベースのソリューションを避けたいのであれば、彼らは私の仕事のために過労です。

+0

性能が問題にならない「中小サイズのLuaテーブル」では、JSONのような標準フォーマットにシリアル化しないのはなぜですか?おそらくデータベースは過度のものになるでしょう。 –

+0

@ColonelThirtyTwoしかし、その場合は、データをLuaテーブルだけを含むluaファイルに残しておきます。 JSONはデータを格納するだけの場合、Luaテーブルに匹敵する1:1ではありませんか? – smartmic

+0

あなたはそれを避けているように見えますが、私はSQLite3のアプローチに行きます。非常にシンプルで高速でスケーラブルで、強力なSQL(再帰的なクエリ - ツリー構造に適しています)を使用し、ACIDデータベースを提供し、メインメモリが大量のデータセットを保持するのを軽減します。 – tonypdmtr

答えて

1

私のlgdbmバインディングには、gdbmデータベース用のテーブルプロキシが含まれています。つまり、Luaテーブルのエントリを読み書きするだけで、gdbmデータベースと対話できます。

lgdbmは文字列のキーと値でのみ動作しますが、必要に応じて他の型を扱うように変更できます。

関連する問題