写点什么

嵌入式网络模型数据库 Neo4j

  • 2008-06-09
  • 本文字数:1537 字

    阅读完需:约 5 分钟

Neo4j 是一个基于网络数据库模型的嵌入式、高性能、轻量级的持久化解决方案,最近网络数据库模型受到了越来越多的关注:

Neo 是一个网络——面向网络数据库——也就是说,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java 持久化引擎,但是它将结构化数据存储在网络上而不是表中。网络(从数学角度叫做图)是一个灵活的数据结构,可以应用更加敏捷和快速的开发模式。
你可以把 Neo 看作是一个高性能的图引擎,该引擎具有成熟和健壮的数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

由于使用了“面向网络的数据库”,人们对 Neo 充满了好奇。在该模型中,以“节点空间”来表达领域数据——相对于传统的模型表、行和列来说,节点空间是很多节点、关系和属性(键值对)构成的网络。关系是第一级对象,可以由属性来注解,而属性则表明了节点交互的上下文。网络模型完美的匹配了本质上就是继承关系的问题域,例如语义 Web 应用。Neo 的创建者发现继承和结构化数据并不适合传统的关系数据库模型:

  1. 对象关系的不匹配使得把面向对象的“圆的对象”挤到面向关系的“方的表”中是那么的困难和费劲,而这一切是可以避免的。
  2. 关系模型静态、刚性、不灵活的本质使得改变 schemas 以满足不断变化的业务需求是非常困难的。由于同样的原因,当开发小组想应用敏捷软件开发时,数据库经常拖后腿。
  3. 关系模型很不适合表达半结构化的数据——而业界的分析家和研究者都认为半结构化数据是信息管理中的下一个重头戏。
  4. 网络是一种非常高效的数据存储结构。人脑是一个巨大的网络,万维网也同样构造成网状,这些都不是巧合。关系模型可以表达面向网络的数据,但是在遍历网络并抽取信息的能力上关系模型是非常弱的。

虽然 Neo 是一个比较新的开源项目,但它已经在具有 1 亿多个节点、关系和属性的产品中得到了应用,并且能满足企业的健壮性和性能的需求:

完全支持 JTA 和 JTS、2PC 分布式 ACID 事务、可配置的隔离级别和大规模、可测试的事务恢复。这些不仅仅是口头上的承诺:Neo 已经应用在高请求的 24/7 环境下超过 3 年了。它是成熟、健壮的,完全达到了部署的门槛。

Java API 包含 12 个类。以下是创建一个节点的代码,非常简单明了:

Transaction tx = Transaction.begin();
EmbeddedNeo neo = … // Get factory
// Create Thomas ’Neo’ Anderson
Node mrAnderson = neo.createNode();
mrAnderson.setProperty( ”name”, ”Thomas Anderson” );
mrAnderson.setProperty( ”age”, 29 );
// Create Morpheus
Node morpheus = neo.createNode();
morpheus.setProperty( ”name”, ”Morpheus” );
morpheus.setProperty( ”rank”, ”Captain” );
morpheus.setProperty( ”occupation”, ”Total bad ass” );
// Create a relationship representing that they know each other
mrAnderson.createRelationshipTo( morpheus,
MatrixRelationshipTypes.KNOWS );
// Create Trinity, Cypher, Agent Smith, Architect similarly

tx.commit();

通过一个“traverser”框架来搜索网络中的节点:

// Instantiate a traverser that returns all mrAnderson’s friends
Traverser friendsTraverser = mrAnderson.traverse(
Traverser.Order.BREADTH_FIRST,
StopEvaluator.END_OF_NETWORK,
ReturnableEvaluator.ALL_BUT_START_NODE,
MatrixRelationshipTypes.KNOWS,
Direction.OUTGOING);

Neo4j 有一个双重的许可模型:免费的( GPL )和商业的(尽管其主页上没有提到价格)。当前版本为 1.0 beta 6,下一个版本将是 Release Candidate 1。对 Neo4j 的 Ruby 和 Python 包装现在也在开发中。

查看英文原文: Neo4j - an Embedded, Network Database

2008-06-09 20:401794
用户头像

发布了 88 篇内容, 共 269.1 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

第56期 | GPTSecurity周报

云起无垠

Linux 文件传输利器:SCP 和 LRZSZ

左诗右码

Shell

轻松畅游VR世界,无需高配置|点量实时云渲染技术

点量实时云渲染

vr 云渲染平台 3D实时云渲染 VR虚拟现实 实时渲染云虚拟仿真

样例体验一之图片解码缩放与同步推理

x

哈啰集团全面接入通义灵码,AI 生成代码占比 20%,研发提效 12%

阿里云云效

阿里云 云原生 通义灵码

REST API 设计:HTTP 请求参数的最佳实践指南

Apifox

程序员 前端 HTTP API REST API

JDK8升级JDK11最全实践干货来了

京东科技开发者

淘宝/天猫获得淘宝商品详情高级版 API

技术冰糖葫芦

api 网关 API Explorer api 货币化 API 文档 pinduoduo API

软件测试学习笔记丨JUnit5嵌套测试

测试人

软件测试

哈啰集团全面接入通义灵码,AI 生成代码占比 20%,研发提效 12%

阿里巴巴云原生

阿里云 云原生 通义灵码 哈啰

淘宝商品评论数据采集丨淘宝商品评论数据接口Taobao.item_review

tbapi

淘宝商品评论数据接口 淘宝评论API接口 淘宝商品评论数据

户外LED显示屏:用科技提升城市档次

Dylan

技术 LED LED显示屏 全彩LED显示屏 led显示屏厂家

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS xFusion (超聚变) FusionServer 定制版

sysin

macos esxi 超聚变 OEM BIOS

在Mac上配置和使用HDC工具的指南

彭康佳

鸿蒙 hdc

代币开发衍生生态:从DApp到链游,NFT,DeFi和交易所的全面解析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

抢占职场C位!全栈开发与测试开发定向就业班助你快速就业

测试人

软件测试

谷歌、Meta、Claude、Perplexity都在争取与苹果AI整合;阿里联合华东师大发布AI视频工具|AI日报

可信AI进展

#人工智能

全新升级!昇腾AI原生创新算子挑战赛(S2赛季)等你来挑战

新消费日报

心大陆AI大模型入选IDC“中国生成式AI市场图谱”

心大陆多智能体

人工智能 AI 大模型 心理健康 数字心理

7thonline第七在线受邀出席零售业卓越运营联盟(COER)2024

第七在线

基于Caffe ResNet-50网络实现图片分类(视频解码+同步推理)

x

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版

sysin

macos 华为 esxi OEM BIOS

自动化技术如何影响企业数据分析的发展

智达方通

数据分析 自动化 财务管理 财务规划

把飞书云文档变成HTML邮件:问题挑战与解决历程

得物技术

CSS JavaScript typescript web前端 企业号2024年6月PK榜

一文读懂Partisia Blockchain的MPC方案,为医疗领域发展赋能

西柚子

威士顿携手 TDengine,共同推动工业数据处理效率提升

TDengine

数据库 tdengine 时序数据库

嵌入式网络模型数据库Neo4j_Java_Gavin Terrill_InfoQ精选文章