logo资料库

Titan官方中文文档.docx

第1页 / 共125页
第2页 / 共125页
第3页 / 共125页
第4页 / 共125页
第5页 / 共125页
第6页 / 共125页
第7页 / 共125页
第8页 / 共125页
资料共125页,剩余部分请下载后查看
第一章 Titan的优势
1.1.Titan一般的好处
1.2.Titan使用Cassandra的好处
1.3.Titan使用Hbase的好处
1.4.Titan和CAP原理
第二章 结构概述
第三章 入门准备
3.1.下载Titan并运行Gremlin Shell
3.2.将众神图载入Titan
3.3.全球指数图
3.4.图遍历的例子
3.5.更复杂的图遍历示例
第四章 配置
4.1.示例配置
4.1.1.Cassandra+Elasticsearch 配置
4.1.2.HBase+Caching (HBase+超级缓存)
4.1.3.BerkeleyDB
4.1.4.更多案例
4.2.使用配置
4.2.1.TitanFactory
4.2.1.1.控制台
4.2.1.2.Titan嵌入式
4.2.1.3.短码
4.2.2.Titan 服务
4.2.2.1.服务发布
4.3.全局配置
4.3.1.更改离线选项
第五章 模式和数据建模
5.1.定义边标签
5.1.1.边标签的多重性
5.2.定义属性键(Property Keys)
5.2.1.属性键的数据类型
5.2.2.属性键的基数
5.3.关系类型
5.4.定义顶点标签
5.5.自动创建Schema
5.6.更改模式元素
第六章 Gremlin 查询语言
6.1.遍历介绍
第七章 Titan 服务
7.1.准备开始
7.2. Gremlin服务连接
第八章 索引获得更好的性能
8.1.图的索引
8.1.1.复合索引
8.1.1.1.索引的唯一性
8.1.2.混合索引
8.1.2.1.属性键添加索引
8.1.2.2.映射参数
8.1.3.排序
8.1.4.标签约束
8.1.5.复合和混合索引区别
8.2.顶点-中心Vertex-centric 索引
8.2.1.有序的遍历
第九章 事务
9.1.事务操作
9.2.事务作用域
9.3.事务失败
9.4.多线程事务
9.5.并发算法
9.6.嵌套事务
9.7.常见的事务处理问题
9.8.事务设置
第十章 缓存
10.1.高速缓存
10.2.事务级缓存
10.2.1.顶点缓存
10.2.2.索引缓存
10.3.数据库级别缓存
10.3.1.缓存过期时间
10.3.2.缓存大小
10.3.3.清理等待时间
10.4.存储后端缓存
第十一章 事务日志
11.1.事务日志用例
11.1.1.变化的记录
11.1.2.下游的更新
11.1.3.触发器Triggers
11.2.日志配置
第十二章 配置参考
12.1.可变的标准
12.2.保护的名称空间
12.3.配置名称空间和选项
12.3.1.自定义属性
12.3.2.缓存
12.3.3.集群
12.3.4.图形计算机
12.3.5.图graph
12.3.6.Gremlin
12.3.7.ids
12.3.8.ids.authority
12.3.9.索引相关配置
12.3.10.index.[X].elasticsearch
12.3.11.index.[X].elasticsearch.create
12.3.12.index.[X].solr(索引Solr)
12.3.13.log *
在ms的最大时间内,它可能会出现在后端。如果在这段时间内,在存储后端不显示写操作,那么日志阅读器可能
12.3.14.metrics度量
12.3.15.metrics.console
12.3.16.metrics.csv
12.3.17.metrics.ganglia
12.3.18.metrics.graphite
12.3.19.metrics.jmx
12.3.20.metrics.slf4j
12.3.21.query
12.3.22.schema
12.3.23.storage 存储
12.3.24.storage.berkeleyje
12.3.25.storage.cassandra
12.3.26.storage.cassandra.astyanax
12.3.27.storage.cassandra.ssl
12.3.28. storage.cassandra.ssl.truststore
12.3.29.storage.cassandra.thrift.cpool
12.3.30.storage.hbase(存储HBase)
12.3.31.storage.lock
12.3.32.storage.meta *
12.3.33.tx
12.3.34.tx.recovery
第十三章 常见问题
13.1.偶然的类型创建
13.2.自定义类数据类型
13.3.事务范围的边缘
13.4.锁异常
13.5.浮点数在顶点中心目录
13.6.幽灵顶点
13.7.Debug 级的调试日志放缓执行
13.8.TitanOutOfMemoryException或过度垃圾收集
13.9.JAMM警告消息
13.10.Cassandra的连接问题
13.11.ElasticSearch内存溢出
第十四章 技术限制
14.1.设计限制
14.1.1.长度限制
14.1.2.数据类型限制
14.1.3.边缘的检索是O(log(k))
14.1.4.类型定义是不能改变的
14.2.临时限制
14.2.1.有限混合索引支持
14.2.2.批量加载速度
第十五章
第十六章 HBase
16.1.HBase Setup
16.1.1.本地服务器模式
16.1.2.远程服务器模式
16.1.3.使用Gremlin服务器的远程服务器模式
16.2.HBase特定的配置
16.3.全球图形操作
16.4.
16.5.
第十七章
第十八章
第十九章 搜索谓词和数据类型
19.1.比较谓词
19.2.文本谓词
19.3.Geo谓词
19.4.示例查询
19.5.数据类型支持
19.6.Geoshape数据类型
19.7.Collections
第二十章 索引参数和全文搜索
20.1.全文检索
20.1.1.全文检索
20.1.2.String Search
20.1.3.全文和字符串搜索
20.2.字段映射
20.2.1.个别字段映射
20.2.2.全球字段映射
第二十一章 直接索引查询
21.1.Query String
21.2.Gotchas
21.2.1.属性键名称
21.2.2.元素标识符碰撞
第二十二章
第二十三章 Solr
23.1.Solr配置概述
23.1.1.连接到Solr
23.1.1.1.连接到SolrCloud
23.1.1.2.通过HTTP连接
23.1.2.Solr Collections
23.1.2.1.Collection 初始化
23.1.2.2.SolrCloud配置中使用Solr
23.1.2.3.Using Solr in HTTP Configuration
23.1.2.4.动态字段定义
23.1.2.5.手动字段定义
23.1.2.6.Schemaless Mode
23.2.异常解决问题
23.2.1.Collection Does Not Exist
23.2.2.连接问题
23.2.3.JTS ClassNotFoundException with Geo Data
23.3.高级的Solr配置
第二十四章
第二十五章 高级模式
25.1.静态顶点
25.2.顶点和边的TTL(存活时间)
25.2.1.边的TTL生存时间
25.2.2.属性TTL
25.2.3.顶点的生存时间
25.3.多属性
25.4.单向的边
第二十六章 最终一致性的存储后端
26.1.数据一致性
26.1.1.无锁数据一致性
26.1.2.分叉的边缘
26.1.3.多属性
26.2.数据不一致
26.2.1.临时不一致
26.2.2.Ghost Vertices 幽灵顶点
第二十七章 故障和恢复
27.1.事务失败
27.2.Titan实例故障
第二十八章 索引管理
28.1.重建索引
28.1.1.概述
28.1.2.之前重建索引
28.1.3.准备重建索引
28.1.4.在MapReduce上执行一个重新索引任务
28.1.4.1.重建索引在MapReduce的例子
28.1.5. 使用TitanManagement执行重新索引工作
28.1.5.1.TitanManagement例子
28.2.删除索引
28.2.1.综述
28.2.2.删除索引准备
28.2.3.执行MapReduce作业删除索引
28.2.3.1.MapReduce删除索引示例
28.2.4.TitanManagement方式删除索引
28.2.4.1.TitanManagement删除索引示例
28.3.索引管理的常见问题
28.3.1.IllegalArgumentException when starting job
28.3.2.找不到索引
28.3.3.Cassandra Mappers Fail with "Too many open files"
第二十九章 批量加载
29.1.配置选项
29.1.1.批量加载
29.1.2.优化ID分配
29.1.2.1.ID Block Size
29.1.2.2.ID回收过程
29.1.3.优化读和写
29.1.3.1.Buffer Size
29.1.3.2.读写稳定性
29.2.策略
29.3.问答
第三十章 图分区
30.1.边分割
30.2.顶点分割
30.3.图分区常见问题解答
30.3.1.随机的和明确的分区
第三十一章 数据类型和属性序列化器配置
31.1.自定义对象序列化
第三十二章 Titan使用TinkerPop和 Hadoop-Gremlin
32.1.定义模式和加载数据
32.2.Running PageRank
第三十三章 Titan数据模型
33.1.BigTable的数据模型
33.2.Titan数据布局
33.3.独特的边布局
第三十四章 建造TItan
34.1.Titan依赖快照
34.2.常见问题解答
Titan Documentation(1.0.0) 中文版 第一章 Titan 的优势 Titan 的设计是为了支持对图形的处理,如此大,以至于需要存储和计算能力,超出了单个 机器所能提供的范围。对实时遍历和分析查询的缩放图数据处理是 Titan 的基本优势。本 节将讨论 Titan 的各种具体好处,以及它所支持的持久性解决方案。 1.1.Titan 一般的好处  支持非常大的图形。Titan 图的规模与集群中的机器数量有关。  支持许多并发事务和操作图处理。Titan 的事务处理能力与集群中的机器数量有很大的 比例,并在几毫秒内回答复杂的遍历查询。  通过 Hadoop 框架支持全局图分析和批处理图处理。  支持 geo、数值范围,以及在非常大的图形上对顶点和边的全文搜索。  本机支持由 TinkerPop 公开的流行的属性图数据模型。  本机支持图形遍历语言 Gremlin。  与 Gremlin 图形服务器进行简单的集成,用于编程语言无关的连接。  大量的图形级配置提供调优性能的旋钮。  Vertex-centric 的索引提供了 vertexlevel 查询,以缓解与臭名昭著的超级节点问题相 关的问题。  提供一个优化的磁盘表示,以便有效地使用存储和访问速度。  自由 Apache 2 许可下的开放源码。
1.2.Titan 使用 Cassandra 的好处  Continuously available 持续可用,没有单点故障。  由于没有主/从架构,所以没有读/写瓶颈。  Elastic scalability 允许机器的引入和移除  缓存层可确保连续访问的数据在内存中可用。  通过向集群中添加更多的机器来增加缓存的大小。  使用 Hadoop 集成。  自由 Apache 2 许可下的开放源码。 1.3.Titan 使用 Hbase 的好处  与 Hadoop 生态系统的紧密集成。  本机支持强一致性。  增加了更多机器的线性可伸缩性。  严格一致的读和写  支持基于 HBase 表的 Hadoop MapReduce 作业的方便的基类。  支持通过 JMX 导出指标。  自由 Apache 2 许可下的开放源码。 1.4.Titan 和 CAP 原理 尽管你尽了最大的努力,你的系统将会经历足够多的错误,它将不得不在 降低产量之间做出选择(例如:停止回答请求)和减少收获(例如:基于不完全的数据给 出答案)。这个决定应该基于业务需求。 -- Coda Hale 在使用数据库时,应该充分考虑 CAP 定理(C=一致性,a=可用性,P=分区)。Titan 上有三 个支持的后端:Cassandra、HBase 和 BerkeleyDB。他们对上限定理的权衡在下面的图中得 到了体现。值得注意的是,BerkeleyDB 是一个非分布式数据库,因此,它通常只用于 Titan 上用于测试和探索目的。
HBase 以牺牲收益率为代价,即完成请求的概率。Cassandra 倾向于以牺牲的代价来获得 可用性,即对查询的答案的完整性(数据可用/完整的数据)。 第二章 结构概述 Titan 是一个图形数据库引擎。Titan 本身专注于紧凑的图形序列化、丰富的图形数据建模 和高效的查询执行。此外,Titan 利用 Hadoop 来进行图形分析和批处理图处理。Titan 为 数据持久性、数据索引和客户端访问实现了健壮的、模块化的接口。Titan 的模块化架构使 其能够与广泛的存储、索引和客户端技术进行互操作;它还简化了扩展 Titan 以支持新技术 的过程。 在 Titan 和磁盘之间有一个或多个存储和索引适配器。Titan 的标准是有以下的适配器,但 是 Titan 的模块化架构支持第三方适配器。  数据存储: o Cassandra o HBase o BerkeleyDB  索引,加速并启用更复杂的查询: o o o Elasticsearch Lucene Solr 从广义上讲,应用程序可以通过两种方式与 Titan 进行交互:
 将 Titan 嵌入应用程序中,在同一个 JVM 中直接执行 Gremlin 查询。在应用查询执 行,Titan 的缓存和事务处理都发生在同一个 JVM 中,数据检索可以来源本地存储或 远程。  通过向服务器提交 Gremlin 查询,与本地或远程 Titan 实例进行交互。Titan 本地支持 Tinkerpop 栈的 Gremlin 服务器组件。 图 2.1。高级的 Titan 架构和环境 第三章 入门准备 世界开始,有两个神叫天王星和盖亚。他们生下了 Titan(一种强大的生 物)。土星,时间的 Titan,在运动中设定了现实。最终,时间产生了天空、海洋和 生命死亡的终结。为了统治这些观念,土星有三个儿子:木星(天空)、海王星(海)和 冥王星(冥界)。土星的儿子不是 Titan 神,而是一个看似不那么强大的神族,他们 把世界看作神。由于担心他的儿子会推翻他,土星吞噬了他们,并将他们囚禁在他 的胃里。这导致了 Titan 和诸神之间的一场大战。最终,众神获得了胜利,而朱庇 特成为了众神的领袖。 这个部分的例子充分利用了一个被称为“神之图”的“Titan”的玩具图。下面是图表。摘 要抽象数据模型被称为一个属性图模型,这个特殊的实例描述了罗马万神殿的存在与地点 之间的关系。此外,图中的特殊文本和符号修饰符(如粗体、下划线等)表示图中不同的模 式/类型。 图 3.1。诸神的图
3.1. 下载 Titan 并运行 Gremlin Shell 众神不知道的是,仍然有一个 Titan。这个 Titan 是不可见的,没有名字, 只有在现实存在的情况下才会显现出来。在这个失落的巨人的肩膀上,所有的现实 都挂在一个起伏的关系网中。
Titan 可以从项目存储库的下载部分下载 Downloads 。一旦检索和解压缩,就可以打开一个 Gremlin 控制台。Gremlin REPL(即交互式 shell)是在 Titan 上发行的,它与标准的 Gremlin 控制台只有区别,因为 Titan 是预先安装和预加载的包。另外,用户可以通过从中央存储 库下载 Titan 包,选择在现有的 Gremlin 控制台安装和激活 Titan。在下面的例子中, Titan。但是,使用 zip 时,一定要解压被下载的压缩文件。 重要: Titan 需要 Java 8(标准版)。建议使用 Oracle Java 8。Titan 的 shell 脚本期望$javahome 环 境变量指向安装 JRE 或 JDK 的目录。 $unzipTitan-1.0.0-hadoop1.zip Archive: Titan-1.0.0-hadoop1.zip creating:Titan-1.0.0-hadoop1/ ... $cdTitan-1.0.0-hadoop1 $bin/gremlin.sh \,,,/ (oo) -----oOOo-(3)-oOOo----- 09:12:24INFO org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph - HADOOP_GREMLIN_LIBSissetto:/usr/local/Titan/lib pluginactivated:tinkerpop.hadoop pluginactivated:aurelius.Titan gremlin> Gremlin 是 Groovy 的一组超集,使用各种简单的表示法,使图遍历变得简单。下面的基本 示例演示了处理数字、字符串和映射。本教程的其余部分将讨论特定于图形的构造 gremlin>100-10 ==>90 gremlin>"Titan:"+"TheRiseofBigGraphData" ==>Titan:TheRiseofBigGraphData gremlin>[name:'aurelius',vocation:['philosopher','emperor']] ==>name=aurelius ==>vocation=[philosopher,emperor] 有关使用 Gremlin 的更多信息,请参阅 Tinkerpop 文档、GremlinDocs 和 SQL2Gremlin。
3.2. 将众神图载入 Titan 下面的例子将打开一个 Titan 图实例,并加载上面所示的神数据集的图形。Titan 工厂提供 一组静态的开放方法,每一种方法都以一个配置作为参数,并返回一个图形实。 本教程调用了其中一个打开的方法,该配置使用了 BerkeleyDB 的存储后端和 Elasticsearch,然后使用助手类 GraphOfTheGodsFactory 加载了神的图。 graph=TitanFactory.open('conf/Titan-hbase-solr.properties') GraphOfTheGodsFactory.load(graph) g=graph.traversal() 这 TitanFactory.open() 和 GraphOfTheGodsFactory.load()方法返回之前对新构造的图进行 如下操作:  在图表中创建了一个全局和以顶点为中心的索引集合  将所有的顶点添加到图中,以及它们的属性。  将所有的边和它们的属性加在一起。 详情请参见 GraphOfTheGodsFactory 的源代码。 注意: SOLR 需要通过 Titan 提供配置文件$TitanHome/conf/solr 提前建立 Titan 模型 Titan_mode 和 edges(边)以及 vertices(顶点)的 Core。 3.3. 全球指数图 在图形数据库中访问数据的典型模式是使用图形索引首先将入口点定位到图中,这个入口点 是一个元素(或一组元素)——即。一个顶点或边。从条目元素中,Gremlin 路径描述描述了 如何通过显式的图形结构来遍历图中的其他元素。 考虑到在 name 属性上有一个惟一的索引,可以检索 Saturn 的顶点。属性地图(即 Saturn 的键/值对)可以被检查。正如所证明的,Saturn 的顶点有一个“Saturn ”的名字,一个 10000 岁的年龄,以及一种“Titan”。saturn 的孙子可以通过一个遍历来获得:“谁是 saturn 的孙儿?”(“父亲”的倒数是“孩子”)。结果是 Hercules。 saturn = g.V().has('name', 'saturn').next() ==>v[256] g.V(saturn).valueMap() ==>[name:[saturn], age:[10000]] g.V(saturn).in('father').in('father').values('name') ==>hercules
属性 place(位置) 也是 graph 索引,这属性 place 是边的属性, 因此 Titan 可以在图形索引中索引边缘。在雅典 50 公里以内发生的所有事件(纬 度:37.97 和 long:23.72)都可以查询神的图表。然后,考虑到这些信息,这些 顶点都包含在这些事件中。 g.E().has('place', geoWithin(Geoshape.circle(23.9, 37.7, 50))) g.E().has('place', geoWithin(Geoshape.circle(37.97, 23.72, 50))).as('source').inV().as('god2').select('source').outV().as('god1') .select('god1', 'god2').by('name') 测试,这两个都没搜索到数据 图索引是 Ttan 上的一种索引结构。图索引是由 Titan 自动选择的,它要求所有的顶点(g.V) 或所有的边(g)满足一个或多个约束条件(例如,有或间隔)。在 Titan 上索引的第二个方面 被称为以 vertex(顶点)为主的索引。以 vertex 中心为中心的索引用于加速图中的遍历。稍 后将介绍以 Vertex-centric 为中心的索引。 3.4. 图遍历的例子 Alcmene,Jupiter 和 Alcmene 的儿子,具有超人的力量。Hercules 是一个半人神,因为他 的父亲是上帝,他的母亲是一个人。Jupiter 的妻子朱诺对木星的不忠行为非常愤怒。为了 报复,她用短暂的精神错乱使 Hercules(大力神)失明,并导致他杀死了他的妻子和孩 子。为了赎罪,Hercules 被德尔斐的神谕命令为 Eurystheus。Eurystheus 把 Hercules(大 力神)派到 12 人。 在上一节中,我们证明了 saturn(土星)的孙子是 hercules(大力神)。这可以用一个循 环来表示。从本质上说,Hercules 是一个离 saturn(土星)2 步远的顶点 in('father')。 hercules = g.V(saturn).repeat(__.in('father')).times(2).next() ==>v[12376] g.V(hercules).out('father', 'mother') ==>v[8280] ==>v[16472] g.V(hercules).out('father', 'mother').values('name') ==>jupiter ==>alcmene g.V(hercules).out('father', 'mother').label() ==>god ==>human hercules.label() ==>demigod
分享到:
收藏