我保留了一个个人待办事项清单,我在这里注释了我想学习的技术和框架。除了永久的“学习锈”外,几个月来都有一个“学习图DB”。
现在是时候开始探索它了。
有什么更好的方法可以理解我学到的比写一篇文章有关的方法?
在第一篇文章中,我尝试解释什么是图形db,为什么我选择重新插图以及如何在本地使用它。在下一篇文章中,我们将看到如何查询数据库,如何编辑和添加关系。在第三个(也是最后一篇)帖子中,我们将研究一些示例。
不进一步的ADO,让我们简要查看图数据库是什么。
什么是图形数据库?
在“经典”关系和NOSQL数据库中,数据以表格方式构成(您可以将其视为电子表格);这使得从数据之间的关系中进行查询更加困难(通常您必须加入两个或多个表)。
图数据库是按照图数据模型结构的。
在“图形数据模型”中,节点之间的关系是优先级,并且您的列出数据更具表现力。
通常,图形数据库具有可视化工具,可让您查看数据的连接方式,从而帮助您从数据中获得有用的见解。
关系数据库的严格架构使其很难寻求数据关系,而图DB可以使其变得容易。
为什么使用图形数据库?
因此,Graph DBS允许您更好地结构和可视化数据。但是为什么您可能需要一个?
最佳用例是:实时建议引擎,知识图和欺诈检测
但是您还可以想到一个社交媒体网络人们与不同类型的关系联系。
由于它们的灵活性,图形DB可以轻松适应您的数据模型,即使它随时间变化。
越来越相关的方法之一是除了传统数据存储之外使用图数据库。
例如,您可以使用MySQL DB来存储您的用户,产品和销售。您可以拥有一个图形数据库来映射您的用户习惯并创建自定义推荐引擎。
您始终必须记住,每种DB类型都有其自己的首选用途:当您必须在实体之间 traverse关系时,图形DB轻松获胜,而SQL DB在聚集和分组结果方面更有效。
为什么要重新绘制?
如今,有多个图DB:Neo4J是第一个想到的。然后有AWS Neptune,ArangodB,TypedB等...
- neo4j 具有一些棘手的许可,他们似乎在“企业”计划上努力:使用社区版,您每个安装都不能拥有一个以上的数据库,并且无法创建一个集群。
- Amazon Neptune 是“付费解决方案”,不适合学习。它以Apache Tinkerpop Gremlin和W3C的Sparql为查询语言。这太容易被锁定了。
- ArangodB 具有独特的多模型方法(节点本质上是存储在集合中的文档)。它使用AQL,一种专有查询语言。
- typedb 使用其自己的查询语言(typeql);您可以很快被锁定。
- redisgraph 是Redislabs开发的Redis的可插入模块。虽然比直接竞争对手neo4j年轻(但仍然不那么功能丰富),但更简单,更快。每个版本都包含新功能。
图元素
图数据库包含:
节点 :节点代表您域中的实体。
边缘 :边缘是节点之间的连接。边缘代表起始节点与末端节点之间的关系,从而使关系为“方向”。
属性 :属性是连接到节点或边缘的键值对。使用属性,您可以存储有关实体或关系的额外信息
标签 :标签可帮助您分类元素(节点和边缘)
思考图形的一种简单方法与名词和动词之间的关系类似。节点或名词是人,地方和物品之类的东西。人际关系或动词是他们的联系方式。人们彼此认识,物品被发送到地方。这些关系中的信号很强大。(source)
在本地运行重新绘制
要开始,您可以上https://redis.com并注册免费的Redis Cloud Tier。免费订阅包括1个专用数据库,30MB的RAM和REDISGRAPH模块,因此您可以使用它来开始学习Redisgraph。
开始探索Redisgraph的最有趣的方法是运行本地Docker容器。
这是一个简单的docker-compose.yml
文件:
version: "3"
services:
redis-stack:
image: redis/redis-stack:latest
container_name: redis-stack
volumes:
- ./local-data/:/data
expose:
- 6379
- 8001
ports:
- "6379:6379"
- "8001:8001"
environment:
- PATH=./bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
您可以使用docker compose up -d
启动它。
如果您打开浏览器并将其指向http://localhost:8001
,您将看到Redisinsight的主要接口。
Redisinsight是Redis的Web UI。
完成后,可以使用docker compose stop
在下一篇文章中
我们介绍了图数据库是什么以及如何使用图形的基础。
在下一篇文章中,我们将查看如何创建数据库并使用Cypher查询它。