Questions tagged «graph-databases»

1
什么时候应该使用文档数据库,关系数据库和图形数据库?[关闭]
为了讨论的目的,让我们考虑一个FourSquare方案。 情境 实体: 用户数 地方 关系: 签到:用户<->地点,很多对很多 朋友:用户<->用户,多对多 数据库设计 这些很可能有错误,请指出。 关系数据库管理系统 表格: 用户数 地方 签到(交界处) 朋友(交界处) 优点: CAP:一致性,可用性 缺点: CAP:分区容限,也称为分片 方案=不灵活的结构 复制不良? 图形 对象: 用户数 地方 边缘: 朋友:用户<->用户 签到:用户->地点 包含时间戳 优点: CAP:一致性,可用性? 无模式,易变的对象和边缘 图形遍历查询,例如: 聚类 寻找一群朋友 寻找类似人喜欢的餐厅 还有其他常见/有用的查询吗? 缺点: CAP:分区容忍度? 文件/物件 3个独立的数据库? 用户数 朋友清单 签到 时间戳记 用户 地点 地方 优点: …

2
如果已经使用图形数据库,为什么还要使用ElasticSearch?
对于ElasticSearch和图数据库之间的比较,我在网络上找不到任何深入的解释。 两者均经过优化以遍历数据。 ElasticSearch似乎已针对分析进行了优化。 但是Neo4j也基于Lucene来管理索引和一些全文功能。 如果已经使用图形数据库,为什么还要使用ElasticSearch? 就我而言,我正在使用Neo4j建立社交网络。 ElasticSearch可以带来什么真正的好处? 更新---------- 我刚刚找到了这一段: 在无数情况下,elasticsearch是有用的。一些用例比其他用例更明确地要求它。下面列出了一些特别适合Elasticsearch的任务。 在大量产品说明中搜索特定词组(例如“厨师的刀”)的最佳匹配,并返回最佳结果 以前面的示例为例,分解出现“厨师的刀”的各个部门(请参阅本书后面的分面) 在文本中搜索听起来像“季节”的单词 在考虑到拼写错误的情况下,根据先前发布的搜索结果,根据部分键入的单词自动完成搜索框 以分布式方式存储大量的半结构化(JSON)数据,并在整个计算机集群中具有指定级别的冗余 但是,应该注意的是,尽管Elasticsearch在解决上述问题方面很出色,但对于其他人来说并不是最佳选择。解决关系数据库已优化的问题尤其困难。问题如下。 计算库存中剩余多少物品 计算给定月份发出的所有发票上所有行项目的总和 通过回滚支持以事务方式执行两个操作 创建保证在多个给定条件下唯一的记录,例如电话号码和分机号 Elasticsearch通常非常擅长提供数据的近似答案,例如按质量对结果进行评分。虽然Elasticsearch可以执行精确的匹配和统计计算,但其主要搜索任务是固有的近似任务。 查找近似答案是一种将Elasticsearch与更多传统数据库区分开的属性。话虽这么说,传统的关系数据库在精度和数据完整性方面都非常出色,而Elasticsearch和Lucene对此几乎没有规定。 我是否可以断言,如果我不需要近似答案,那么与已经使用的图形数据库相比,ElasticSearch会毫无用处吗?

1
从原点向外产生最大边数为3的边和顶点的算法
我正在为一个网站创建2D游戏,在该网站上,宇宙可以变得非常大(基本上是无限大)。最初,宇宙由6个与原点(0,0)等距离的恒星组成。我的任务是能够生成更多的恒星,这些恒星将具有相互连接的“路径”(边缘)。如何设计满足以下限制的算法: 恒星是向外随机产生的。(例如,新星的(x,y)坐标将在所有方向上从(0,0)缓慢向外移动,最好采用螺旋格式) 边缘不会交叉。 尽管应该有一些差异,但新星不应与其他星相距太远或太近。(例如必须有一个最小半径) 星星/点的倍数不得超过3。 鉴于所有这些都将存储在数据库中,该算法不会太昂贵。换句话说,我很想达到O(n)的复杂度(我不知道这是否可行)。 本质上,我要寻找的是一个螺旋状的星系,其中的恒星是图形上的点,恒星之间的行进由这些恒星之间的边缘描绘。 我需要解决的特定步骤是: 在尚未重合3的其他恒星附近随机产生一个点。 查找尚未有多重度3且不会产生边缘冲突的第一颗恒星。 如果星形距离最小x单位,则在两点之间创建一条边。 我尝试寻找解决方案,但是我的数学技能(以及关于图论的知识)需要大量工作。此外,将不胜感激与此问题有关的任何资源/链接。 这是我在想的一些伪代码,但是我不确定这是否还能奏效,并且我确定在经过10,000次等运算后,它的性能将无法令人满意。 newStar = randomly generated (x, y) within radius of last star from origin while(newStar has not been connected): for (star in the known universe): if(distance between newStar and star > x units): if(star has < 3 multiplicity): …

7
嵌套实体和叶实体属性的计算-SQL或NoSQL方法
我正在从事一个名为“菜单/食谱管理”的业余项目。 这就是我的实体及其关系的样子。 A Nutrient具有属性Code和Value 一个Ingredient具有集合Nutrients 一个Recipe具有的收藏,Ingredients有时也可以具有其他的收藏recipes 一个Meal有一个收集Recipes和Ingredients 一个Menu有集合Meals 关系可以描述为 在其中一个页面中,对于所选菜单,我需要显示根据其成分(膳食,食谱,成分和相应的营养素)计算出的有效营养素信息。 到目前为止,我正在使用SQL Server来存储数据,我正在从C#代码导航链,从菜单的每一餐开始,然后汇总营养值。 我认为这不是一种有效的方法,因为每次请求页面时都会进行此计算,并且成分会偶尔更改。 我在考虑有一个后台服务,该服务维护一个称为MenuNutrients({MenuId, NutrientId, Value})的表,并且在任何成分(餐,菜谱,成分)发生变化时,将使用有效营养素填充/更新该表。 我认为GraphDB非常适合此要求,但是我接触NoSQL的机会有限。 我想知道显示给定菜单营养的这种要求的替代解决方案/方法是什么。 希望我对场景的描述清楚。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.