什么是图数据库?
图数据库是一种旨在将数据之间的关系视为对数据本身同样重要的数据库。它旨在保留数据而不将其限制在预定义的数据模型。取而代之的是,数据的存储方式就像我们初始绘制出来的一样,显示每个单独实体如何与其他实体关联或相关。
我们生活在一个互联的世界中!没有孤立的信息,但是我们周围都是丰富的、相互联系的领域。只有本身支持关系的数据库才能存储、处理和有效地查询联接。当其他数据库在查询时通过昂贵的JOIN操作来计算关系时,图数据库则将联接与数据一起存储在模型中。
访问本机图数据库中的节点和关系是一种高效的、时间恒定的操作,它允许您单核每秒快速遍历数百万个联接。
与数据集的总大小无关,图数据库擅长管理高度连接的数据和复杂的查询。图数据库仅使用一个模式和一组起点,就可以围绕这些初始起点探索相邻数据,收集和汇总来自数百万个节点和关系的信息,并保持搜索范围之外的任何数据不变。
与大多数技术一样,很少有其他方法来构成图数据库的关键组件。其中一种是属性图模型,其中数据被组织为节点、关系和属性(存储在节点或关系上的数据)。
节点是图中的实体。它们可以包含任意数量的属性(键-值对),称为 properties。节点可以用标签(labels)标记,代表域中的不同角色。节点标签还可以用于将元数据(例如索引或约束信息)附加到某些节点。
关系定义了两个实体节点之间的定向化的、命名化、语义相关的连接(例如员工-就职-公司)。关系始终具有方向、类型、开始节点和结束节点。像节点一样,关系也可以具有属性。在大多数情况下,关系具有一些定量的属性,例如权重、成本、距离、等级、时间间隔或强度。由于有效的关系存储方式,两个节点可以共享任意数量或类型的关系,而不会影响性能。尽管它们按特定的方向存储,但始终可以在任一方向上有效地导航关系。
Neo4j是一个开源的NoSQL图数据库,开发于2003年,自2007年以来公开可用。使用Java和Scala编写的源代码可在GitHub上免费获得,也可以通过应用程序下载。Neo4j分社区版和企业版。企业版包括社区版提供的所有功能,以及额外的企业要求,例如备份,群集和故障转移功能。
Neo4j之所以称为图数据库,是因为它有效地将属性图模型实现到了存储级别。这意味着数据的存储方式与您在白板上的存储方式完全相同,并且使用指针来导航和遍历图。与图处理或内存库相比,Neo4j还提供了完整的数据库特性,包括ACID事务合规性、集群支持和运行时故障转移,使其适合生产场景中数据使用。
以下某些特殊功能使Neo4j在开发人员、架构师和DBA中非常受欢迎:
1.Cypher,一种类似于SQL的声明性查询语言,但针对图进行了优化。现在已通过openCypher项目由其他数据库(如SAP HANA Graph和Redis graph)使用。
2.由于有效地表示了节点和关系,因此在图中进行恒定时间深度和广度遍历。在合适的硬件上可以支持数十亿个节点。
3.随时适应的灵活的属性图架构,为以后便捷实现和添加新的关系,并在业务需求变化时加快域数据的速度。
4.适用流行的编程语言驱动程序,包括Java、JavaScript、.NET、Python等。
如今,Neo4j已被几乎所有行业的数千家公司和组织所使用,包括金融服务、政府、能源、技术、零售和制造业。围绕该技术的蓬勃发展,活跃的社区将继续帮助我们为开发人员和企业提高neo4j的产品和服务。