代码之家  ›  专栏  ›  技术社区  ›  Bruno

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

  •  -1
  • Bruno  · 技术社区  · 14 年前

    我试图找到一个工具和库来编辑、写入和读取分层结构中的数据,类似于LDAP树、Windows注册表或伯克利数据库结构。 键应该表示一些层次结构,值应该具有相对灵活的格式(键入是可选的,但可能有用)。下面是一个例子:

    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 Regedit或 Apache Directory Studio (LDAP Browser) .

    2. 将数据保存到某个存储区(如文件)。

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

    我希望这些操作读起来相当快,但不要提前把它们全部载入内存。数据存储将或多或少地手动更新到应用程序中,比读取数据的频率要低得多。 能够从API写入这些数据是一个优势,但这不是一个严格的要求。

    查询会很好。例如(在伪查询中),“list items/*where top==10”将返回:

    • 项目/项目1
    • 项目/项目2

    易于编辑(通过良好的图形用户界面)是最重要的功能之一。

    我考虑了几个选择:

    1. LDAP服务器 回答大多数需求(尤其是在Apache Directory Studio的帮助下)。但是,仅为此部署LDAP服务器太重了。无论Apache Directory Studio有多好,用户仍然需要对LDAP有一个合理的理解(不仅仅是解释树层次结构)。我也希望在模式的创建上有一些灵活性(或者根本没有模式) 而不是依赖管理员来完成这项工作。

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

    3. RDF . 那是可行的。我相信对于语义Web有相当好的Python库。不过,我不需要任何推理能力。我宁愿吃点快一点的东西,这样也不会占用太多的记忆。我不确定是否有任何好的GUI工具来查看和编辑这棵树(因为它面向Web和图形)。

    当然,在现有系统(例如,sqlite)之上构建这种数据结构是有办法的,这是可以的,但我不确定是否有一个好的图形用户界面可以与它一起使用。

    我非常感谢您的意见和建议,谢谢。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Pete Wilson    14 年前

    请原谅我的致密性,但是如果你的等级制度不是最粗糙的例子,那么你选择它的理由一定是非常令人信服的,压倒性的,比如说,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库。

    为什么不采取这种方法呢?