数据变大,数据不够结构化,数据间有千丝万缕的连接,如何建立数据模型?

它们是怎么玩的:

NOSQL 数据库

类型 举例
Key-Value 存储 redis、riak、Voldemort. Dynamo
宽列存储 HBase、Cassandra
文件存储 mongdb、CouchDB
图存储 Neo4j、titan、OrientDB

Key-Value 存储

数据模型

优缺点

列存储家族

基于 BigTable(Google 的对结构化数据分布式存储模型)的存储模型。

数据模型

优缺点

文档数据集

数据模型

优缺点

图数据集

数据模型

节点和关系

优缺点

什么是图

图就是一群连接在一起的对象集合的抽象表现

对象 Object(Vertrx, Node)
连接 Link(Edge, Arc, Relationship)

什么是图数据库

使用图结构做为数据模型的数据库,每个节点通过边可看到它的相邻节点,当节点增加,本地查询的复杂度不变。

Apache Tinkerpop

处理如此复杂的数据里需要数据库提供方提供完备的 API 接口,但若是使用某一个数据库提供方提供的接口,当迁移至其他数据库时就麻烦的很,为解决这个问题,Tinkerpop 应运而生。

Tinkerpop 是图数据库的一般性API,它整合了 Titan DB, Neo4j, Orient DB 等等数据库

Titan 数据库

使用 Apache Tinkerpop API 优化了分布式存储和检索包含上亿个顶点和边的可伸缩的图数据库,它支持 Apache Spark 和 Hadoop(默认)的 map-reduce 操作。

并集成了 ElasticSearch,Solr 和 Lucene,并使用如下后端存储: