小型/中型层次数据结构的GUI工具和API

-1 投票
1 回答
859 浏览
提问于 2025-04-16 00:18

我正在寻找一个工具和库,用来编辑、写入和读取一种分层结构的数据,类似于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

我的使用场景是:

  1. 通过一个方便的图形界面来编辑数据存储。这看起来可以像Windows的注册表编辑器,或者Apache Directory Studio(LDAP浏览器)

  2. 将这些数据保存到某个存储中(例如一个文件)。

  3. 从另一个应用程序加载这个存储,这个应用程序能够通过API查询它。理想情况下,这个库应该可以通过Python调用。

我希望这些操作在读取时速度合理,但不需要提前将所有数据都加载到内存中。数据存储的更新会相对手动,更新的频率远低于读取的频率。能够通过API写入数据会是一个加分项,但不是严格要求。

查询功能也很重要。例如(伪查询),"列出 Items/* 其中 top == 10" 会返回:

  • Items/item_1
  • Items/item_2

通过一个好的图形界面来编辑数据是最重要的功能之一。

我考虑过几个选项:

  1. 一个LDAP服务器满足大部分需求(特别是在Apache Directory Studio的帮助下)。不过,仅仅为了这个目的部署一个LDAP服务器太复杂了。尽管Apache Directory Studio很好,但用户仍然需要对LDAP有合理的理解(不仅仅是解释树状结构)。我还希望在创建模式时有一些灵活性(或者根本不需要模式),而不是依赖管理员来处理这些。

  2. Windows注册表编辑器。我不确定这是否可行,但我想象中可以有一个与实际Windows注册表无关的类似注册表的文件,可以通过注册表编辑器编辑自定义内容。不过,我希望这个图形应用程序能在非Windows平台上使用,而且我甚至不确定是否有Python API可以读取Windows注册表文件。

  3. RDF。这可能可行。我相信有相当不错的Python库可以用于语义网。不过,我不需要任何推理能力。我更希望有一些快速且占用内存少的东西。我不确定是否有好的图形工具可以查看和编辑树结构(因为它们主要面向网络和图形)。

当然,可以在现有系统(比如SQLite)上构建这种数据结构,这样也可以,但我不确定是否有好的图形界面可以配合使用。

我会很感激大家的评论和建议,谢谢。

1 个回答

0

请原谅我说得可能有点笨,但如果你的层级结构不是最简单的那种例子,那么你选择这种方式一定有非常强烈的理由,而不是选择像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的库。

那为什么不考虑这种方法呢?

撰写回答