小型/中型层次数据结构的GUI工具和API
我正在寻找一个工具和库,用来编辑、写入和读取一种分层结构的数据,类似于LDAP树、Windows注册表或Berkeley DB结构。这个结构的键应该能表示某种层级关系,而值的格式要相对灵活(类型可以选择,但有时会有用)。下面是一个例子:
Items/item_1/shape = "rectangle"
Items/item_1/top = 10
Items/item_1/left = 10
Items/item_1/width = 30
Items/item_1/height = 40
Items/item_2/shape = "square"
Items/item_2/top = 10
Items/item_2/left = 10
Items/item_2/width = 30
Items/item_3/shape = "circle"
Items/item_3/centre_x = 40
Items/item_3/centre_y = 50
Items/item_3/radius = 20
Items/item_3/colour = blue
我的使用场景是:
通过一个方便的图形界面来编辑数据存储。这看起来可以像Windows的注册表编辑器,或者Apache Directory Studio(LDAP浏览器)。
将这些数据保存到某个存储中(例如一个文件)。
从另一个应用程序加载这个存储,这个应用程序能够通过API查询它。理想情况下,这个库应该可以通过Python调用。
我希望这些操作在读取时速度合理,但不需要提前将所有数据都加载到内存中。数据存储的更新会相对手动,更新的频率远低于读取的频率。能够通过API写入数据会是一个加分项,但不是严格要求。
查询功能也很重要。例如(伪查询),"列出 Items/* 其中 top == 10" 会返回:
- Items/item_1
- Items/item_2
通过一个好的图形界面来编辑数据是最重要的功能之一。
我考虑过几个选项:
一个LDAP服务器满足大部分需求(特别是在Apache Directory Studio的帮助下)。不过,仅仅为了这个目的部署一个LDAP服务器太复杂了。尽管Apache Directory Studio很好,但用户仍然需要对LDAP有合理的理解(不仅仅是解释树状结构)。我还希望在创建模式时有一些灵活性(或者根本不需要模式),而不是依赖管理员来处理这些。
Windows注册表编辑器。我不确定这是否可行,但我想象中可以有一个与实际Windows注册表无关的类似注册表的文件,可以通过注册表编辑器编辑自定义内容。不过,我希望这个图形应用程序能在非Windows平台上使用,而且我甚至不确定是否有Python API可以读取Windows注册表文件。
RDF。这可能可行。我相信有相当不错的Python库可以用于语义网。不过,我不需要任何推理能力。我更希望有一些快速且占用内存少的东西。我不确定是否有好的图形工具可以查看和编辑树结构(因为它们主要面向网络和图形)。
当然,可以在现有系统(比如SQLite)上构建这种数据结构,这样也可以,但我不确定是否有好的图形界面可以配合使用。
我会很感激大家的评论和建议,谢谢。
1 个回答
请原谅我说得可能有点笨,但如果你的层级结构不是最简单的那种例子,那么你选择这种方式一定有非常强烈的理由,而不是选择像JSON或者(呃!)XML这样的格式:
<items> <item> <number>1</number> <shape>rectangle</shape> <top>10</top> <left>10</left> <width>30</width> <height>40</height> </item> <item> <number>2</number> <shape>triangle</shape> <top>20</top> <left>50</left> <width>30></width> <height>40</height> </item> </items>
对于XML来说,有很多编辑器可以满足你的需求。JSON也是如此。我觉得还有一些可以把XML转成MySQL再转回XML的库。
那为什么不考虑这种方法呢?