小编Cla*_*dio的帖子

树结构的数据模型(文件系统):文档模型与图模型

我正在评估一个nosql解决方案,用于实现类似于结构的文件系统,包含数百万个项目,其中主要功能必须是:

  • 快速查找由n项属性过滤的项目的"父项"或"直接子项"或"子树项",页面结果按项属性排序.

有这个要求我把问题分成2个任务:

  1. 为搜索子项/子树子项建模递归项结构
  2. 为物品属性搜索项目结构建模

现在,nosql schema free的强大功能是为每个文件存储不同属性的一个很好的功能,这对第2点很有用.

我对第1点关于使用文档数据库(示例mongodb)以及单个项目集合和物化路径设计模式,或使用带有2个集合的图形数据库(示例arangodb)的优缺点进行了一些疑问:数据(文档集合)和items父母关系(边缘集合)和图形遍历函数.

根据我的要求,使用图形数据库的性能有哪些优势?

图形遍历比物化路径过滤器更有效地完成我的任务?

如果是的话,你能解释一下为什么吗?

谢谢

mongodb neo4j graph-databases orientdb arangodb

3
推荐指数
2
解决办法
1662
查看次数

使用ArangoDb/OrientDb进行分层数据模型和文档搜索:是正确的解决方案吗?

我正在开发一个文档管理软件,我正在评估存储和搜索数据的noSql数据库.

总结当项目在目录和子目录中组织时,软件就像文件系统一样.

树的每个项目都可以有n个属性用于过滤和排序.

物品也可以最终与某种其他关系(父母除外)相互联系.

项目数量可能相对较大(数百万),并且应用程序的杀手级功能必须在检索数据(使用过滤器和按属性排序)方面具有恒定的性能,而不依赖于数据库增长.

我需要3个关键功能:

  • 获取文件夹的直接子项.结果必须是每个文档属性的可分页,可排序和可过滤的

  • 获取文件夹的所有子项(子树的所有项).结果必须是每个文档属性的可分页,可排序和可过滤的

  • 获取文件夹的所有父母

我是noSql中的新手,实际上我使用的是rdbms(Sql Server),但我遇到了性能问题以及由文档属性的固定架构引起的所有限制.我正在评估OrangoDb或OrientDb,因为我认为它的功能(面向文档和面向图形)可能是我设计需求的最佳解决方案.

你能帮助我,给我一个关于设计数据库和查询这个3任务的建议吗?

铌.我需要查询的结果返回一个数据集,其中包含每个属性的列:

Es. doc1: p1: v1, p2: v2
    doc2: p1: v1, p3: v3

result:
    name | p1 | p2 | p3
    doc1   v1   v2   null
    doc2   v1   null v3
Run Code Online (Sandbox Code Playgroud)

我在想设计一个项目:

{ 
  "_id": "_myItemId",
  "name`enter code here`" : "Item1",
  "itemType": "root / folder / file"   
  "parentItemId": "",
  "properties" : [ 
    { name: "Property1", formatType: 0, formatMask: "", value: "Value1" }, 
    { name: "Property2", formatType: 0, formatMask: "", value: "Value2" }, …
Run Code Online (Sandbox Code Playgroud)

nosql graph-databases document-database orientdb arangodb

2
推荐指数
1
解决办法
868
查看次数