王若 阿里巴巴图数据库GDB的设计与实践

文字内容
1. 阿里巴巴图数据库GDB的设计与实践 王若(百润) 阿里巴巴高级技术专家 1
4. • Tair,TairGraph图服务的演进 • 图数据库GDB的设计 • 图数据库的应用场景与实践 • GDB的发展和生态 2
5. Tair,TairGraph & GDB – 以关系图描述 • Tair(Taobao Pair)是阿里巴巴原创的高速分布式NoSQL数据库 • 专门设计用于超大规模洪峰抗量场景,2018 双11购物节第一秒:8.5亿每秒 • 1.0系统是KV Engine,2.0系统主要面向多模服务 Tair Service • 属性图模型的结构化存储,和多模服务之一 • Gremlin支持 演进 包含 1.0 Key-Value 2.0 Multi-Model MDB/LDB RDB/PDB 改进 孵化 孵化 孵化 • Cloud-Native的高可靠图数据库,支持属 性图,支持ACID事务 • 针对内部TairGraph使用场景的改进和总 结,具备高度优化的存储和计算层 • 目前处于公测阶段,即将上线 云:memcache 云:redis 云数据库:GDB 3
6. TairGraph 架构及应用 – 基于Tair2.0 Gremlin TairGraph Redis / Geo-Spatial / REST IDC1 Tair Client 实例x SDK灵活控制读写 RDB 常态/大促态冷热容灾 热点散列加速 PDB Raft多副本强一致 PENA 原生NVM Engine TairGraph 异构Multi-Master多活 importer 多模数据导入服务 Per实例级别的跨域同步 IDC2 4 计算中心
7. TairGraph 背景及应用 • 图数据的结构化 顶点,边,属性;和部分索引的存储 聚焦数据的访问能力和高可用性,放弃事务 • 适应场景和需求 SQL在处理高度连接数据时无法满足性能需求: 高度连接数据查询能力,schema-free 大数据系统实时性缺陷,及混合访问能力 超高速的导入系统的需要 典型应用:用户关系场景 Gremlin在计算平台上的通用性 5
8. • Tair,TairGraph图服务的演进 • 图数据库GDB设计 • 图数据库的应用场景与实践 • GDB的发展和生态 6
9. TairGraph到GDB的架构设计演进 • 强弱需求分析 Why Gremlin?-- 目前图数据库的事实标准 Shared-Everything结构导致HA结构变化 Gremlin的兼容力要极强 • Cloud-Native和传统模型的变化 Graph 使用痛点 超级顶点,range及分区:图元素结构存储的局限性 Edge Vertex 数据完整性和强一致性:事务引入和界限 面向数据,而不是面向遍历:图数据库场景的思考 7 Properties
10. 高可用设计 – 公测版本 APP APP APP ALB 主实例 备实例 计算层 存储层 云盘 计算层 同步 存储层 云盘 图数据库GDB公测版本支持高可用实 例,后续商业化将进一步开放一写多读实 例,提供读实例的水平扩展能力。 • 高可用版本采用一主一备的经典高可用架构,主备都 采用独立的图数据库节点,计算与存储分离 • 主备之间通过复制(默认半同步)实现数据同步,一 旦主库发生故障,将迅速检测并触发主备切换来保证 可用性。备库故障对业务无影响,但会快速被检测到 并触发备库自愈 • 未来提供一写多读实例后,所有读写实例将共享底层 存储资源(3副本),提升扩展性的同时也将带来整 体存储成本的进一步降低 8
11. 高度优化的自研引擎 Cost-Based Optimizer Parallel Traversal Gremlin Runtime 图数据库实例 计算层 Fine-Grained Locking RC/RR/SI/SSI Isolation Options Smart Cache 存储层 MVCC High Performance Transaction Mechanism Schema-Agnostic Indexing Highly-Tuned Storage Engine over AliCloud Block Storage High Reliability (3 Copies) 9
12. 自动索引 & Schema-Free ID-001 ID-002 ID-003 Value1:ID-001 Value2:ID-002 Value3:ID-003 Value1:ID-001 Value2:ID-002 Value3:ID-003 Value1:ID-001 Value2:ID-002 Value3:ID-003 Schema-Free和自动索引机制更易于用户的开发使用,节省大量DBA相关工作 10
13. GDB in a nutshell SDK Java, Python, Http Restful, .Net GDB Server Connection Layer Authentication, Connection Control, Gremlin Protocol Import Service Script Engine Mgnt Service &Tools Traversal Optimizer Execution Engine Load Runner GraphStore Graph Structure Transaction Storage Engine File System Layer 11 Load Manager Graph Cache Replica Service
14. Graph Storage的思考与演进 商业化演进 • 松散数据的存储 APP APP APP ACID及Validation下放 APP APP ALB 充分利用底层系统的高可用性 面向range做优化,面向子图运 算做优化 • 计算(withComputer) 主实例 只读实例 只读实例 只读实例 计算层 计算层 计算层 计算层 存储层 存储层 存储层 存储层 数据库计算与大数据计算的差异 性 云盘 / 盘古 只读节点 [敬请期待] 12
15. GDB VS. Neo4J 测试 – 点边查询 • • • • gdb 语句 测试机器:16core 128g ECS 包括顶点、边的简单查询,返回id、label以及properties属性数据 graph500 和 twitter 两个数据集下,随机查询顶点和边 在1、16、32、64、96、128并发下每次压测 10min 求平均值 queryV g.V(vertexId).valueMap(true) queryE g.E(edgeId).valueMap(true) neo4j 语句 queryV match (n:person{personId: $vertexId}) return n queryE start r=rel($edgeId) return r 响应时间(ms) -- 越小越好 MAX TPS – 越大越好 10 25000 8 20000 6 15000 4 10000 2 5000 0 graph500 twitter graph500 点查询 0 twitter graph500 边查询 gdb twitter graph500 点查询 neo4j 边查询 gdb 13 twitter neo4j
16. GDB VS. Neo4J 测试 – K-HOP • K-HOP邻居查询是衡量图遍历性能的一个很好的标准,它询问在起始 顶点的K步的所有顶点,方向采用 both • Twitter测试集合数据量较大,2-HOP在2M+ 邻居查询耗时 case 1-hop 2-hop random 3-hop gdb 测试数据集 latency(rt) graph500 0.85 超时率 0% latency(rt) 1 超时率 0% 10.76 0% graph500 559.76 0% 601.13 0% graph500 92979.03 • 0% 2.39 19814.81 neo4j 语句 MATCH (b:person{personId: $vertexId}) -[r*0..%d]- (c) return distinct c neo4j twitter twitter gdb 语句 g.V(vertexId).repeat(both()).times(kNumber).dedup() 1.09%(1) 49211.28 2.94%(1) 35% NULL 100% 14 • GDB在简单查询下 • • graph500 数据集下与neo4j 性能相当 twitter数据集下峰值TPS GDB比neo4j稍慢,但 latency占优 GDB在 K-HOP 邻居查询 • • graph500 数据集下与neo4j性能相当 twitter 大数据集下GDB比neo4j快60%以上
17. • Tair,TairGraph图服务的演进 • 图数据库GDB的设计 • 图数据库的应用场景与实践 • GDB的发展和生态 15
18. 典型场景,Why Graph Database? 用户Userld-xxx发起“自己2度好友中名字叫James的人”这样一个查询请求。 以传统关系数据库的做法,SQL: 图数据库中查询2度好友: 16
19. 复杂、松散的关系 17
20. 复杂关系在GDB中的建模 18 • 图数据库建模更直观 • 适合松散数据模型和关系连接、表达 • 结合Gremlin容易挖掘隐式关系
21. Example – 设计实时推荐系统 • 场景特点 优化之前依赖于批处理的业务逻辑;更快更精确的结果 基于更多维度的快速查询,最近的浏览、购买过的其它商品、退换货的情况 用户近期行为数据更快地纳入推荐算法中 • 建模(书籍推荐) Vertex:书籍(Book)、出版商(Publisher)、作者(Author)、读者(Reader) Edge:出版(Publish)、写作(Write)、打分(Score) Property:名字(name)、类型(type)、年龄(age)、出版年份(year) 19
22. Example – 书籍推荐系统 • 关联性推荐: 20 1. 找到和小明看过同样的书的用户 2. 找出这些用户看过评论的小明没有 的书
23. Example – 推荐系统,相似度过滤 • 基于相似度的过滤方法 基于内容的过滤,针对书籍信息本身 作者、年代、篇幅、出版社,和情感 分析、自然语言处理等 • 协同过滤,针对其它关联信息 基于和其它读者的关联关系 用户标签 • 实际情况 相似度距离算法多样化 维度扩充,实时更新,清洗频繁 21
24. 典型场景 – 社交网络,金融欺诈 欺诈检测 社交网络 图数据库可以轻松应对海量高度互连社交数据的实时存储和高效查询,帮 助您快速构建复杂的社交网络系统。例如,在一个典型的社交网络中,常 常会存在“谁认识谁,谁上过什么学校,谁常住什么地方,谁喜欢什么餐 馆之类的查询”,传统关系型数据库对于超过3度的查询往往会很低效甚至 无法支持,但图数据库从基因层面提供了解决方案,轻松应对社交网络的 各种复杂存储和查询场景。 在金融领域,图数据库经常用于欺诈检测场景。例如,通过贷款、分期消费者 的联系人(或者联系人的联系人)信用信息,对用户进行信用评分,如果评分 较低,则拒绝贷款或者提升利率;通过申请人的个人信息(包括电话号码、家 庭住址),判断申请人信息是否属实。通常,欺诈者是通过“黑市”购买的用 户信息然后拼凑出的“个人信息”,并且这些信息会被反复使用,使用图数据 库,可以快速的发现申请人提供的个人信息与现有的用户信息的关系。 22
25. 典型场景 – 知识图谱,IT运营 知识图谱 网络/IT运营 图数据库可以帮助您快速的构建知识图谱。您可以将图谱数据存储在图数 据库中,既可以通过外部输入实时更新,也可以对图数据库内部图谱信息 进行分析来不断发现并完善图谱数据。比如, 基于图数据库,你可以快速 实现像针对足球明星这样的知识图谱应用, 帮助用户浏览,发现感兴趣的 信息。 图数据库非常适合网络/IT运营相关场景。比如,您可以将路由器, 交换机,防火墙,服务器等各种网络设备和终端及其拓扑信息存储在 图数据库中,当某服务器或终端遭受恶意攻击或者受到感染时,你可 以通过图数据库快速分析并找到传播路径,然后进行相关追踪及处 理。 23
26. 操作对比:SQL vs Gremlin 例:查询所有的员工,和其主管,以及所在的汇报链的位置 SQL: 除去在做图遍历时语义复杂: • 频繁的标签、属性CRUD(ALTER TABLE) • 递归、JOIN是多度查询和过滤的最常见步骤 • 可能的外键约束(边的两个顶点,属性的点边) • 业务场景上数据频繁更新和清洗 24
27. • Tair,TairGraph图服务的演进 • 图数据库GDB的设计 • 图数据库的应用场景与实践 • GDB的发展和生态 25
28. DTS & Backup/Restore 26
29. 监控 & 告警订阅 27
30. 图可视化 28
31. GDB Analytics(敬请期待) • • Gremlin OLAP Provider • • Gremlin标准遵从 • HTAP (与Gremlin OLTP并存,一份数据) • 非常适合超大数据集的复杂查询和处理 • 支持并发请求 • Highly Parallel • BFS (vs OLTP的DFS) • Vertex-centric / Graph-centric 内置算法 路径查找系列算法 • Shortest Path, Single Source Shortest Path, All pairs shortest path, Minimum Weight Spanning Tree… • 中心度系列算法 • PageRank, Betweenness Centrality, Closeness Centrality… • 社群检测系列算法 • Connected Components, Louvain, Label Propagation… 29
32. GDB 社区 • Aliyun GDB • https://www.aliyun.com/product/gdb • nosql@list.alibaba-inc.com • Gremlin中文网 • http://tinkerpop-gremlin.cn/ 30