Neo4j与搜索引擎的特性解析
1. Neo4j数据库特性
1.1 数据存储方式
Neo4j将所有数据存储在单个服务器上,设置副本时,每个副本包含完整的数据副本,而非整个图数据的子集,这与采用分片方法在集群各服务器间共享数据的三元组存储方式不同。这种单节点存储方式为复杂图操作提供了良好的查询速度,但对于非常大的图,可能需要使用高规格的服务器硬件,而非多个小型廉价的通用服务器。
例如,Neo4j文档建议每个服务器使用快速固态硬盘(SSD)作为主要存储机制。由于SSD的容量比传统磁性旋转磁盘小,因此服务器需要更多空间来容纳SSD,并且可能需要创建虚拟磁盘阵列(RAID阵列)以分散写入负载。同时,服务器的I/O子系统必须能够充分利用连接的SSD数量,这通常需要服务器配备专用的I/O控制器卡。
1.2 垂直扩展与成本
为了提供更大的数据存储和查询速度而需要高规格硬件,这是垂直扩展的一个例子,即购买更大规格的服务器来处理更多负载。然而,购买双倍规格的机器可能需要三倍的成本,而购买两台相同规格的服务器仅需两倍的成本,因此垂直扩展比其他NoSQL数据库的水平扩展成本更高。但如果确实需要高性能的图操作并且愿意为此付费,那么成本和速度之间的权衡可能是值得的。
1.3 遵循开放标准
在三元组存储和链接(开放)数据领域,主要的标准包括资源描述框架(RDF)、网络本体语言(OWL)和SPARQL协议与RDF查询语言(SPARQL)。Neo4j开箱即用不支持这些标准,但可以找到各种第三方插件和方法,使Neo4j成为符合标准的三元组存储。
不过,这些插件可能不会直接将RDF概念映射到Neo4j中,