【发布时间】:2016-04-03 15:58:58
【问题描述】:
我正在编写一个小型独立 Lua 工具,它使用树中的多个键/值对作为数据存储。我的原型使用 Lua 表,它们非常适合我的任务。然而,表条目不断变化和增长。对我来说,这似乎是将所有数据存储在数据库中的一个很好的理由。
许多小型工具依赖于 SQLite 数据库,但我认为如果想要存储中小型 Lua 表,必须有更好的(键值)解决方案。我读过关于使用 SQL 存储树的文章,但乍一看看起来很复杂。
是否有一种KISS 解决方案用于在数据库中存储和检索 Lua 表,可能与查询语言一起使用?
数据库仍然很小,应该是持久的,不需要处理并行查询。性能也没有问题,该工具仅供单用户使用。我更喜欢基于磁盘/文件的数据库。理想情况下,数据库的更新(查询/脚本)应受版本控制。
首先,我将 (G)dbm 视为可能的候选对象(请参阅 here),但我不知道一种简单且“可编写脚本”的方式来修改和创建新条目(就像使用 SQL 语句一样) .
我想避免像 MongoDB 这样的成熟/基于服务器的解决方案或像 Neo4j 这样的图形数据库,它们对于我手头的任务来说太过分了。
【问题讨论】:
-
对于性能不是问题的“中小型 Lua 表”,为什么不序列化为 JSON 等标准格式呢?一个数据库可能是矫枉过正。
-
@ColonelThirtyTwo 好的,但在这种情况下,我会将数据保留在仅包含 Lua 表的 lua 文件中。仅存储数据时,JSON 与 Lua 表不是 1:1 可比吗?
-
即使您似乎避免使用它,我还是会使用 SQLite3 方法。它非常简单、快速、可扩展、使用强大的 SQL(包括递归查询——适用于树结构)、提供 ACID 数据库,并减轻您的主内存的负担,从而避免保存大型数据集。
-
@tonypdmtr 你在 SQL 中推荐什么,我找到了邻接列表、嵌套集、闭包表等解决方案……还有什么?
标签: sql database sqlite lua dbm