是一个用Java实现、完全兼容ACID的图形数据库。数据以一种针对图形网络进行过优化的格式保存在磁盘上。Neo4j的内核是一种极快的图形引擎,具有数据库产品期望的所有特性,如恢复、两阶段提交、符合XA等。自2003年起,Neo4j就已经被作为24/7的产品使用。
该项目刚刚发布了 - 关于伸缩性和社区测试的一个主要里程碑。通过联机备份实现的高可用性和主从复制目前处于测试阶段,预计在下一版本中发布。Neo4j既可作为无需任何管理开销的内嵌数据库使用;也可以作为单独的服务器使用,在这种使用场景下,它提供了广泛使用的接口,能够方便地集成到基于、.NET和JavaScript的环境里。但本文的重点主要在于讨论Neo4j的直接使用。开发者可以通过直接与图形模型交互,这个API暴露了非常灵活的数据结构。至于象、、、等其他语言,社区也贡献了优秀的绑定库。Neo4j的典型数据特征:
- 数据结构不是必须的,甚至可以完全没有,这可以简化模式变更和延迟数据迁移。
- 可以方便建模常见的复杂领域数据集,如可被建模成细粒度的访问控制表,、以及。
- 典型使用的领域如、、、、、以及。
甚至“传统”RDBMS应用往往也会包含一些具有挑战性、非常适合用图来处理的数据集,如文件夹结构、产品配置、产品组装和分类、媒体元数据、金融领域的语义交易和欺诈检测等。
围绕内核,Neo4j提供了一组可选的。其中有支持通过构造图形结构、 - 一种SparQL兼容的RDF TripleStore或一组公共的实现。
要是你想将Neo4j作为单独的服务器运行,还可以找到包装器。这非常适合使用软件搭建的架构。通过、e-tag和基于的缓存和Web层,REST甚至简化了大规模读负荷的伸缩。