No SQL DB初探
利用周末的空闲时间,了解了下Neo4J, Neo4J是一种No SQL DB, No SQL DB是一种和关系型数据库相对应的对象数据库。按照数据模型保存性质将当前NoSQL分为四种:
- Key-value stores键值存储, 保存keys+BLOBs
- Table-oriented 面向表, 主要有Google的BigTable和Cassandra.
- Document-oriented面向文本, 文本是一种类似XML文档,MongoDB 和 CouchDB
- Graph-oriented 面向图论. 如Neo4J.
关系型数据库的弊端:
关系型数据库的历史已经有30余年了,因此,在某些情况下,关系型数据库的弱点就会暴露出来:
- 对象-关系 阻抗不匹配。关系模型和面向对象模型在概念上存在天然的不匹配的地方,比如对象模型当中特有的继承,组合,聚合,依赖的概念在关系模型当中是不存在的。
- 模式演进。即随着时间的推移,需要对数据库模式进行调整以便适应新的需求,然而,对数据库模式的调整是的成本很高的动作,因此很多设计师在系统设计之初会设计一个兼容性很强的数据库模式,以应对将来可能出现的需求,然而在现在的web系统开发过程中,系统的变更更加频繁,几乎无法预先设计出一种万能的数据库模式以满足所有的需求,因此 模式演进的弊端就愈发凸显。
- 关系型数据库处理 稀疏表时的性能非常差。
- network oriented data 很适合处理 人工智能、社交网络中的一些需求。
所以,各种各样的No SQL DB 出现了,这里只简单介绍下Neo4J 的基本知识。 Neo 数据模型 Neo4J 是一个基于图实现的No SQL DB, 其基本的数据类型有如下几种: Node, Relationship, Property. Node 对应于图中的 节点,Relationship 对应图中的边,Node 和 Relationship 都可以拥有Property, Property 的数据结构为。
数据遍历 Neo 提供了Traverser对数据中的数据进行遍历。