图数据库的简介-来源百度百科
1.简介
图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷
2.图数据库的数据结构
图数据库包含两种基本数据类型:
Nodes(节点) 和 Relationships(关系)。
Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。
3.janusgraph
注:本人学习参考的是官方文档和其他学习资料,如有错误请指出
1.janusgraph的优点
JanusGraph is designed to support the processing of graphs so large that they require storage and computational capacities beyond what a single machine can provide.Scaling graph data processing for real time traversals and analytical queries is JanusGraph’s foundational benefit.This section will discuss the various specific benefits of JanusGraph and its underlying, supported persistence solutions.
上述可以理解为:设计 JanusGraph 是为了支持处理如此大的图,以至于它们需要超出单台机器所能提供的存储和计算能力。 为实时遍历和分析查询缩放图形数据处理是 JanusGraph 的基本优势
1.1基本优势
- Support for very large graphs. JanusGraph graphs scale with the number of machines in the cluster.
- Support for very many concurrent transactions and operational graph processing. JanusGraph’s transactional capacity scales with the number of machines in the cluster and answers complex traversal queries on huge graphs in milliseconds.
- Support for global graph analytics and batch graph processing through the Hadoop framework.
- Support for geo, numeric range, and full text search for vertices and edges on very large graphs.
- Native support for the popular property graph data model exposed by Apache TinkerPop.
- Native support for the graph traversal language Gremlin.
- Easy integration with the Gremlin Server for programming language agnostic connectivity.
- Numerous graph-level configurations provide knobs for tuning performance.
- Vertex-centric indices provide vertex-level querying to alleviate issues with the infamous super node problem.
- Provides an optimized disk representation to allow for efficient use of storage and speed of access.
- Open source under the liberal Apache 2 license.
1.2和hbase的集成
- Tight integration with the Apache Hadoop ecosystem.
- Native support for strong consistency.
- Linear scalability with the addition of more machines.
- Strictly consistent reads and writes.
- Convenient base classes for backing Hadoop MapReduce jobs with HBase tables.
- Support for exporting metrics via JMX.
- Open source under the liberal Apache 2 license
1.3. JanusGraph and the CAP Theorem
Despite your best efforts, your system will experience enough faults that it will have to make a choice between reducing yield (i.e., stop answering requests) and reducing harvest (i.e., giving answers based on incomplete data). This decision should be based on business requirements. |
||
-- Coda Hale |
When using a database, the CAP theorem should be thoroughly considered (C=Consistency, A=Availability, P=Partitionability). JanusGraph is distributed with 3 supporting backends: Apache Cassandra, Apache HBase, and Oracle Berkeley DB Java Edition. Note that BerkeleyDB JE is a non-distributed database and is typically only used with JanusGraph for testing and exploration purposes.
HBase gives preference to consistency at the expense of yield, i.e. the probability of completing a request. Cassandra gives preference to availability at the expense of harvest, i.e. the completeness of the answer to the query (data available/complete data).
CAP定理的简介:C =一致性,A =可用性,P =可分区性 -----https://en.wikipedia.org/wiki/CAP_theorem
2.janusGraph的整体架构
Data storage:
Indices, which speed up and enable more complex queries:
应用程序和Janusgraph进行交互
- 将JanusGraph嵌入到执行Gremlin查询的应用程序中,直接针对同一JVM中的图形。查询执行,JanusGraph的缓存和事务处理都发生在与应用程序相同的JVM中,而从存储后端进行的数据检索可能是本地的或远程的。
- 通过向服务器提交Gremlin查询来与本地或远程JanusGraph实例交互。JanusGraph本身支持Apache TinkerPop堆栈的Gremlin Server组件。
Janusgraph的架构
架构分为三层:
客户端使用层,业务分析层,存储层
业务分析层:联机事务处理和联机分析处理