2016-04-03 78 views
2

我正在寫一個小型獨立的Lua工具,它使用樹中的幾個鍵/值對作爲數據存儲。我的原型使用了Lua表格,它們非常適合我的任務。但是表格條目不斷變化並不斷增長。對我而言,這似乎是將所有數據存儲在數據庫中的一個很好的理由。將幾個Lua表保存在一個小數據庫中?

許多較小的工具依賴於SQLite數據庫,但我認爲如果要存儲中小型的Lua表,必須有更好的(鍵值)解決方案。我讀了關於用SQL存儲樹,但乍一看看起來很複雜。

是否有KISS存儲和檢索數據庫中的Lua表的解決方案,可能與查詢語言一起使用?

數據庫仍然很小,應該是持久的,不需要處理並行查詢。性能也沒有問題,該工具只是單用戶。我更喜歡基於磁盤/文件的數據庫。理想情況下,DB的更新(查詢/腳本)應受版本控制。 (G)dbm作爲可能的候選人(見here),但我不知道一個簡單的「腳本化」方法來修改和創建新條目(就像用SQL語句可以做的那樣)。

我想要避免像MongoDB這樣的基於全面/基於服務器的解決方案,或者使用像Neo4j這樣的圖形數據庫,它們對於我的任務來說可能是過度的。

+0

對於性能不成問題的「中小型Lua表」,爲什麼不序列化爲像JSON這樣的標準格式?數據庫可能會矯枉過正。 –

+0

@ColonelThirtyTwo好了,但在這種情況下,我會將數據保留在僅包含Lua表的lua文件中。與只有存儲數據的Lua表相比,JSON不是1:1嗎? – smartmic

+0

即使您似乎避免它,我也會用SQLite3方法。它非常簡單,快速,可擴展,使用強大的SQL(包括遞歸查詢 - 適用於樹結構),提供ACID數據庫,並且卸載主內存以保持大型數據集。 – tonypdmtr

回答

1

我的lgdbm綁定包含gdbm數據庫的表代理。換句話說,您只需通過在Lua表中讀寫條目就可以與gdbm數據庫進行交互。

爲了簡單起見,lgdbm僅適用於字符串鍵和值,但可以修改它以處理其他類型(如有必要)。

相關問題