- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个文档管理软件,我正在评估一个用于存储和搜索数据的 noSql 数据库。
总结当项目被组织在目录和子目录中时,软件就像一个文件系统。
树的每个项目可以有n个属性用于过滤和排序。
项目最终也可以通过某种其他关系(父子关系除外)相互连接。
项目数量可能相对较大(数百万),应用程序的 killer 级功能必须是独立于数据库检索数据(使用过滤器和按属性排序)的性能提高。
我需要 3 个关键功能:
获取文件夹的直接子文件夹。对于每个文档属性,结果必须是可分页、可排序和可过滤的
获取文件夹的所有子项(子树的所有项)。对于每个文档属性,结果必须是可分页、可排序和可过滤的
获取文件夹的所有父级
我是 noSql 的新手,实际上我使用的是 rdbms (Sql Server),但我遇到了性能问题以及由文档属性的固定架构引起的所有限制。我正在评估 OrangoDb 或 OrientDb,因为我认为它的功能(面向文档和面向图形)可能是满足我设计需求的最佳解决方案。
你能帮我,给我一个设计数据库和查询这三个任务的建议吗?
铌。我需要查询的结果返回一个数据集,其中每个属性都有一个列:
Es. doc1: p1: v1, p2: v2
doc2: p1: v1, p3: v3
result:
name | p1 | p2 | p3
doc1 v1 v2 null
doc2 v1 null v3
我正在考虑设计一个项目:
{
"_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" },
{ name: "Property3", formatType: 0, formatMask: "", value: "Value3" }
]
}
您对能够解决上述 3 个关键功能的设计有什么建议吗?
谢谢
最佳答案
使用图形数据库的方法与其他类型的 dbms 非常不同。您可以使用边“连接”您的实体(顶点),边是一个实体与另一个实体之间的直接链接。所以,首先,你不需要存储例如。每个对象的“parentItemId”,就像您在 Sql 或文档数据库中所做的那样,但是您将拥有两个/三个或多个只有其特定数据的实体;关系将由您在它们之间创建的边缘处理。
OrientdDb 有一个非常好的文档和一些示例来开始理解概念。 EG:教程页面:http://orientdb.com/docs/2.1/Tutorial-Working-with-graphs.html解释图形概念并提供一些很好的示例。
在您的特定情况下,您可以有两种实体类型(顶点),文件夹和文档,以及您调用的边缘,例如。 “ChildOf”(从文档到文件夹)或“包含”(从文件夹到文档)。然后,您可以执行许多查询来查找关系,甚至指定嵌套级别等。
您可以通过以下步骤创建工作模式:
1 创建类和边缘类型:
CREATE CLASS Document Extends V
CREATE CLASS Folder Extends V
CREATE CLASS ChildOf Extends E
2 插入一些文件
INSERT INTO Document SET Title = 'Document 1', Name = '..'
INSERT INTO Document SET Title = 'Document 2', Name = '..'
INSERT INTO Document SET Title = 'Document 3', Name = '..'
3 插入文件夹
INSERT INTO Folder SET Name = 'Folder 1'
INSERT INTO Folder SET Name = 'Folder 2'
4 在顶点之间创建边(关系)
CREATE EDGE ChildOf FROM #<specify document rid here> TO #<specify folder rid here>
...
您还可以通过在两个文件夹之间设置相同的“ChildOf”边缘来创建一个文件夹作为另一个文件夹的子文件夹:
CREATE EDGE ChildOf FROM #<specify children folder rid here> TO #<specify parent folder rid here>
...
5 查询您的图表。使用 expand() 和 in() 运算符获取文件夹的直接子级:
Select expand(in('ChildOf')) From #<folder rid> Where ...
获取文件夹的所有子文件夹,使用 Traverse 查询从起始文件夹遍历所有子文件夹:
SELECT FROM (
TRAVERSE out('ChildOf') FROM #<folder rid> WHILE $depth <= 3 //you can specify the maximum level of nesting
) where $depth > 0 //exclude the first element (the starting folder itself)
使用遍历和“In”图形运算符获取文件夹的所有父级:
SELECT FROM (
TRAVERSE in('ChildOf') FROM #<folder rid>
) where $depth > 0 //exclude the first element (the starting folder itself)
//here you could filter only the "Folders"
where @class ='Folder'
关于orientdb - 使用 ArangoDb/OrientDb 进行分层数据模型和文档搜索 : is the right solution?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064797/
我有一个 Segment 类和一个这样的段数组: private static class Segment { int number, type; Segment(in
我在 SO 中看到一些创建 multilanguage websites in JavaScript 的好建议包括 this article on JavaScript internationaliz
我们有浏览器前缀或黑客 (for Google and Safari) text-align: -webkit-right; (for Firefox) text-align:
过去几天我一直在关注这个问题,我正处于需要寻求帮助的地步。 http://cub.northnodes.com/index.php/about/mission/ 我需要立即捐赠 列一直 float 到
When I press right ctrl, I want the right shift the text will align right. When I press left ctrl le
我已经将右侧的列拆分为顶部和底部。在每个部分中,我在执行以下操作时遇到问题:我希望顶部占据左列高度的 50%,底部占据左列高度的另外 50%。 +-------------------+-------
我知道这个问题的标题很糟糕。对不起。 我有四个 div similar to this .我想要做的只是让 div 编号 2 和 4 之间的垂直空间被删除,而不改变 HTML 的结构。是否可以仅使用
我将表格设置为 100% 宽度。我会添加一个带有 php 的随机 div,有时会充满广告。我希望广告 div 位于表格的右侧和内容。我希望表格位于左侧,但仍为 100% 左右,它将填充广告 div 左
这个问题在这里已经有了答案: Bootstrap align navbar items to the right (24 个答案) 关闭 5 年前。
.floatright { float: right;margin: 0 0 10px 10px;clear: right;width:60px; height:60px; } Lorem
我正在尝试将 td 中的某些内容右对齐。 align="right"有效,但 text-align:right 无效。这是一个 jsfiddle显示这两种情况的示例。除了右对齐右列外,这两种情况是相同
在设计网站时,您认为用于特定任务的最佳图像格式是什么? 在试图找出用于特定任务的格式时,我总是发现自己处于两难境地……例如,我应该全面使用 .jpg 吗?或者,我何时以及为什么应该使用 .png? 例
我是一个 MySQL 新手,今天我尝试设置一个超过 5 行的 MySQL 调用。我不断收到语法错误,我尝试修复了几个小时,但我不知道问题出在哪里。这是代码: USE myDatabase; DELIM
这让我发疯。我有一个 div float 到另一个 div 的右侧,如下所示: Current Membership: 我有以下 css 规则: div#container { f
我有以下代码片段,它会产生不需要的“填充”区域,而填充为零。如何避免这个区域? 代码 div.left { background-color: red; max-width: 25%; f
在 C++ 中,表达式 left() = right() 求值 right() left() 按那个顺序。 right() 先行,正如已讨论过的 here. 我想不出让 right() 先走的理由。你
我有一个很小的菜单列表,当鼠标靠近时它应该会增长。在其原始状态下,菜单是右对齐的,悬停时每第二个元素向右移动并左对齐以为增加的高度腾出空间(参见 JSFiddle )。 ul { font-siz
td.myclass{ width: 6em; text-align: right; padding-right: 2em; } 如您所见,我希望单元格中的文本右对齐,距离单元
你怎么能看到 http://jsfiddle.net/73wst/ 我想在停止下开始,但我不知道如何设置它的样式。 我的 HTML: Stop Start 我的 CSS: .sta
一个大的内部 div 在一个小的外部 div 中,并且外部 div 溢出自动。但是为什么没有内部 div margin-right 和外部 div padding-right? html
我是一名优秀的程序员,十分优秀!