Orientdb 时间和地理位置数据的数据库设计
我已经成功地实现了文档中所示的类似功能。最小时间单位所指向的数据(事件类)使用lucene空间索引进行索引 我有两种活动:私人活动或公共活动 我应该如何为我的用例设计数据库和集群? 使用边缘或链接列表将Min链接到事件是否更好? 我担心我的lucene空间索引将来会变得太大 通过阅读文档,看起来拥有地理定位数据将是一个伟大的战略 只能对子查询使用索引:Orientdb 时间和地理位置数据的数据库设计,orientdb,graph-databases,Orientdb,Graph Databases,我已经成功地实现了文档中所示的类似功能。最小时间单位所指向的数据(事件类)使用lucene空间索引进行索引 我有两种活动:私人活动或公共活动 我应该如何为我的用例设计数据库和集群? 使用边缘或链接列表将Min链接到事件是否更好? 我担心我的lucene空间索引将来会变得太大 通过阅读文档,看起来拥有地理定位数据将是一个伟大的战略 只能对子查询使用索引: select from (select expand(month["12"].day["25"].hour["17"].mi
select
from
(select
expand(month["12"].day["25"].hour["17"].min["07"].events)
from
Year
where
year = 2015)
where
[lat,lng,$spatial]
NEAR
[66,66,{"maxDistance":1}]
关于索引的文档告诉我可以使用。坏的一面是它比链表占用更多的存储空间。我测试了它,它可以工作:
select
expand(inV())
from
(select
expand(month["12"].day["25"].hour["17"].min["07"].outE('MinPublicEvent'))
from
Year
where
year = 2015)
where
[lat,lng,$spatial]
NEAR
[66,66,{"maxDistance":1}]
关于边与链接(取自),第一个区别是边可以存储属性,而链接不能 以下是轻量化边与常规边的优缺点: 优点: 创建和遍历速度更快,因为不需要额外的 文档以保持两个顶点之间的关系 缺点: 无法从中存储使用轻量级边的属性 SQL,因为边缘下没有常规文档 因为您已经提到在边上使用属性,这对我来说很有意义,因为您可以在边上使用这些属性来横切图形,这意味着您不能使用链接来存储该关系 如果您希望将这些属性嵌入到事件顶点上,这也很好,并且您可以使用链接,从而失去了使用边中的属性横穿图的能力,从而有利于提高性能 edge方法更具表现力,但当性能真正重要时,并且存在瓶颈风险时,您应该监控指标和性能,并重构为嵌入+链接方法,以防性能出现问题 更新: 集群基本上是OrientDB中分割数据的一种机制,它同时适用于边和顶点 您还可能会发现在服务器上定位不同的集群是有益的 不同的服务器,物理上将记录存储在不同的位置 你的数据库。这样做的好处包括:
- 优化:如果您 只需搜索类中集群的子集
- 索引:通过良好的分区,您可以减少或删除>索引的使用
- 并行查询:当对上的数据进行查询时,可以并行运行查询 多个磁盘李>
- 切分:您可以跨多个应用程序切分大型数据集 多个实例
何时添加更多集群?度量,度量和度量。跟踪应用程序访问数据库的方式、查询类型、查询量等。更新内容非常丰富,但现在我不能完全确定问题是什么,还是关于图形模型的讨论?是的,这仍然是一个问题,但我找到了我关心的问题之一的答案,即子查询上的索引搜索。我仍然想知道我应该如何使用群集,以及如何从Min到Event(edge或linklist)建立链接。我应该发布一个答案吗?还没有回答群集,因为我还不知道,但我正在研究这个问题,并将用我的发现更新我的答案谢谢,我认为如果我想有一些不同类型的事件(将有不同的边缘类),边缘方法也会使索引变小,但正如你所说的,性能会随着扩展而降低。。。伟大的答案值得深思使用集群信息给出答案,哦,是的,对于不同类型的事件,将关系属性放在边缘也有助于模型中的解耦。