图形数据库Neo4J简介:https://www.cnblogs.com/loveis715/p/5277051.html
Neo4J所适合的领域,那就是记录图形数据,及结点集和结点之间的关系。而对于其它一些类型的数据,如用户的用户名/密码对,那就不是图形数据库所擅长的领域了。在这些情况下,我们应该选取合适的数据库来记录这些数据。在一个大型系统中,
多种不同类型的数据库相互协作
是经常有的事情,所以没有必要非要将一些本来应该由其它类型的数据库所记录的数据硬生生地记录在Neo4J中。
可以通过排序查找二各实体之间的比较关系,如A的得分比B的得分高。
图数据库Neo4j数据建模系列(四) — 模型设计
https://zhuanlan.zhihu.com/p/142238621
https://zhuanlan.zhihu.com/p/141235984
具有模式和复杂建模过程的关系数据库并不适合快速更改。您需要的是一个不会牺牲性能的数据模型,它在保持数据完整性的同时支持不断发展的数据。
如果您要创建一个具有易于理解的、变化最小的数据模型的应用程序,请坚持使用久经考验的关系数据库,只要坚持已经可行的方法。
但是在需求不明确的前提下。您甚至都不知道用户要问的问题。
这时,您需要一个敏捷的数据模型,您需要一个与开发一起发展的数据模型(不分解或滞后),您需要一个图数据模型。
超边的概念是在此模型以及其他模型中显而易见的一种建模技术。通常创建超边(或中间节点)来建模两个以上实体之间存在的关系。通常创建它们是为了表示某个时间点上多个实体的连接。
https://zhuanlan.zhihu.com/p/143928976
超边的拓展:
https://www.infoq.cn/article/data-modeling-graph-databases
Jim & Ian:超边来自另外一个叫做“超图(hypergraphs)”的图形模型。超边是特殊类型的关系,它连接了两个或两个以上节点。举个例子:你在 Facebook 上‘赞’了某个东西,然后你的朋友‘赞’了你的赞。尽管很多理论家和其它图形数据库中非常拥护超边,但它并不是 Neo4j 的主要成分。以我们经验来看,它们仅在相对较小范围的案例中适用。而其小范围适用性也往往被附加复杂性及其智力成本抵消掉了。
当然在 Neo4j 中,我们可以通过往图形中添加另一个节点(中间节点)为超边建模。比如,我们可以设计最初那个赞 (alice)-[:LIKES]-(post) 如下:(alice)-[:CREATED]->(like)-[:FOR]->(post),就这样我们有了(赞)这个节点。接下来要赞这个赞就非常容易了:(bob)-[:LIKES]->(like)。这不但在需要时带来了与超边等同的功能,也在不需要时(大部分时候)避免了这些复杂性。
如果对图形建模新来者有任何建议的话,那就是:不要(意外)将实体编译为关系。
图数据库设计原理及应用场景
https://blog.csdn.net/u010799658/article/details/107467252
在图数据库设计、实施中的方式应该是:所见即所得。不再需要做“有模型设计”。
数据库 | 待建模问题 | 处理方式 | 说明 |
---|---|---|---|
Neo4j | 已有学生表,某个特殊学生的属性字段与现在的学生表字段不同,有增减 | 直接在原来的图数据库基础上新建一个该学生节点,设置所需属性字段即可,并且也可给个“学生”标签 | 在Neo4j中同一个标签的实体可以拥有不同的属性、关系 |
关系型数据库 | 如上 | 修改“学生”表,增加或删除表中的属性字段 | 原来的业务代码很大可能要修改 |