AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

从 CockroachDB 看事务型数据库开发

  • 2016-04-14
  • 本文字数:2062 字

    阅读完需:约 7 分钟

CockroachDB 继 2015 年 5 月融到第一笔 $6.25M 的 A 轮之后,今年 3 月底又融到 $20M。对事务型数据库的开发者们,这是个好消息。

有哪些东西值得思考呢?

首先 CockroachDB 也是个很棒的团队,位于纽约,去年 A 轮时只有 6 个人,到现在也就 20 来号人。小而精;和在大数据里站山头创业里大多数妖魔鬼怪一样,创始人有三个工程师,包括 CEO Kimball,都来自大数据老巢 -Google;第一位投资者:Benchmark 的 Peter Fenton。Benchmark 投资过大名鼎鼎的 Hortonworks 和 New Relic。 自然而然地,A1 轮 Google Venture,Hortonworks CEO Rob Bearden 和 Cloudera 创始人 Jeff Hammerbacher 也进来了。所以,找对投资人很重要,根正苗红的大数据投资者,带来的不仅是 $$。

这种数据库一开始就是为互联网定制的–线性扩展、确保事务完整性,全局的数据一致、和极端情况下的生存能力,即使内存、磁盘、节点、集群甚至是数据中心崩溃。而最对口的客户之一,无疑是服务于世界 500 强的 SAAS 公司—5 分钟的事务型服务中断,可能影响到重要的 ERP、CRM 等核心业务系统,而对于 SAAS 服务提供商而言,那就是自砸招牌。因此,强哥很聪明地选了 SAAS 作为重点用户场景之一,而不仅靠互联网公司。

开始的时候,他们几个纯粹是按开发者的路子,本来打算 2015 年夏天推出的 Beta 版,目标是 Transactional Key-Value Store.,所以最后还是决定把 SQL 加上去,这大概增加了 2 个季度的开发时间。不过,这样的定位更清晰,不会半生不熟地做了个 NoSQL, 让用户自己琢磨到底是自己做索引,还是等等看。等等,索引自己做? 别忘了他们是从 Google 来的,Spanner 和 Web Index 可是 CockroachDB 的童子功啊。加上 SQL 对于用户来讲更加方便。

他们放弃的东西,也值得大家思考:他们放弃了 Join,放弃了并行执行分布式查询。有意思吧? 实际上是放弃掉“关系型”。在浓浓的 Redis 里,加了 SQL 这个大料,就成了 Fusion food 了。6 个人,两个月完成,真不错。

互联网公司对一致性的要求并不高,数据模型这种东西基本上不放在眼里,也确实用不上。Redis 当年连 Int 的类型都没有,只有 string,哪管你营收、销售、现金流报表是否对得上? 这也让他们获得了很多东西,比如响应时间和并发。Twitter 当年开始的那种场景,就算用自己用 Hash Table 建索引,也没啥不可能的,一张表满了,就写下一张。MySQL 拿来当 Raid 0 用,复制到 20 台节点上就行,Partition 信息交给根节点,用 Ruby On Rails 写个搜索,搜个三天的内容也挺好。

对今后的发展而言,要和大量的 NoSQL 竞争对手区别开,跨数据中心的数据一致性是个很棒的卖点,随着 FinTech 的蓬勃发展,连花旗、大摩、德银、Visa 的舵手都加盟互联网金融,CockRoachDB 也把这个作为路线图里的重点项目。

随着 Lucene 的发展,和 Java Future 把大家从以 Service 为节点的 DAG 拓扑带到以 Future 为节点的同、异步统一的网络编程等等,助力了 Twitter 从 2010 年开始开发的的 real-time indexing,2010 年开始给大家带来很多想象空间,原来可以自己根据内外不同的数据来源(不仅是用户帖子,而且用户资料,排名,第三方数据、地址等等)加好多东西到索引里。

也为了方便互联网公司业务的发展—哪家的表结构能保证不变啊? 通过多版本和分阶段授权等方式,Cockroach 在 Beta 版本里加了一个 Online Schema Change System,在服务不中断和不锁表的情况下,增加列,修改 Index。你想想,像 Stack overflow 那样的公司,一个五六千万行的表,做 Alter table 操作,起码要五六个小时吧?如果用 Amazon RDS 服务,能否在 Slave 上做好再 Promote 到主服务器上,还另说。

这功能也挺有意思:改变表结构 schema 不是一蹴而就的事,毕竟有那么多节点,都有各自的 cache 和 TTL。要保证所有节点最终都用到正确的 schema 版本,需要一定“收敛时间”。像 PrestaDB、Trafodion 这一类成熟的数据库引擎一样,它也用了广播和租约相结合的方式。 在 DML 之后,节点会收到一个“读”的租约,在分钟级别的租约内可以用这个 schema,而一旦出现 Alter Table,将广播给集群里所有节点,让他们放弃当前租约,准备用新的,这样来达到更快的收敛时间。

他们下一步开发还是会去支持 JOIN 和并行 Query 执行。这是个很大挑战。像 Apache Trafodion 这种引擎当年能在 Nonstop 大型数据库上用,支持银行电信高并发的 OLTP,其核心竞争力之一就在于并行处理,大致的做法包括多个机制上的并行,比如并行处理 Partition 或更小粒度的 Division、执行器里一个个 SQL operator 连起来的管道并行和 SQL Operator 本身的同步 / 异步计算并行。 但是,这里面的难度很大,比如,为了确定到底用几个 worker 线程参与并行,需要考虑 Key 的数据分散情况,相关 Query 可能涉及到的行数范围,在架构各层插入统计信息的柄,如何下推,周到的 Update Statistics 之类以便优化,进行检测执行树每层的数据倾斜情况等等。

作者介绍:杨旸,就职于上海易鲸捷,兴趣在于分布式事务、SQL 优化、Hadoop 开源生态圈。 yang.yang@esgyn.cn

2016-04-14 21:003894

评论

发布
暂无评论
发现更多内容

显存也能叠叠乐,双 Intel Arc A770 显卡低成本部署 DeepSeek R1 32B 蒸馏模型体验

E科讯

特斯拉、宇树、Figure AI 核心供应链企业梳理与商业化壁垒,「汇丰银行」人形机器人研报解读

机器人头条

科技 大模型 人形机器人 具身智能

魔搭×通义灵码:0代码基础、0门槛在线编程做应用

阿里云云效

阿里云 云原生 通义灵码

智能制造:数字工时解决方案

积木链小链

数字化 数字工厂 智能制造

【前瞻技术布局】京东零售广告创意:引入场域目标的创意图片生成

京东科技开发者

故障隔离与防护架构设计

FunTester

DApp用户激励机制设计:从代币经济到行为心理学的深度解构

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

AI 与 CI/CD 双轮驱动:接口自动化测试破局之道

智在碧得

AI 技术分享 智在碧得 碧桂园

【企业级文生视频】互动双语视频生成器闪亮登场 !

火山引擎开发者社区

数据安全,信息安全解决方案,信息安全实施方案

金陵老街

信息安全 数据安全

无人值守收入核算,无需下班的“AI收入会计”

用友智能财务

AI 数字化 财务 会计

INFINI Labs 产品更新 - Coco AI – 增强 AI 搜索、API 管理与性能优化等

极限实验室

console Gateway easysearch CocoAI

产教融合、科教融汇激发世界级成果,西安交通大学鲲鹏昇腾科教创新孵化中心揭牌

极客天地

探秘京东外卖幕后:地图&轨迹技术探寻

京东科技开发者

户外LED广告屏的安装与维护指南

Dylan

商业 LED LED display LED显示屏 户外LED显示屏

AI口语机器人的运营推广

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

如何开始搭建一个交易所软件?从规划到上线的完整指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

国产堡垒机助力信创产业蓬勃发展

行云管家

网络安全 信创 国产化 国密

阿里云服务器遭遇DDoS攻击有争议?

网络安全服务

CDN DDoS 阿里云服务器 高防IP DDoS 攻击

单元化架构在字节跳动的落地实践

火山引擎开发者社区

Cloud Ace 宣布成为 Langfuse 亚太地区首个代理商,提供 LLM 全链路方案

Cloud Ace 云一

LLM LLMOps 生成式 AI 应用 Langfuse

每月仅能使用80小时,ToDesk再度降低免费用户使用时长

科技热闻

深度解读「高盛」人形机器人最新研报:核心供应链企业梳理和投资分析(附报告)

机器人头条

科技 大模型 人形机器人 具身智能

企业自建DNS解析有什么利弊?(国科云)

国科云

【等保小知识】等级保护全称以及实施流程详解

行云管家

网络安全 等保

【Redis技术进阶之路】「原理分析系列开篇」揭秘分析客户端和服务端网络通信交互实现(服务端篇 - 命令执行过程)

码界西柚

redis RESP Redis 协议 redis 底层原理 通信模式

这款流行 AI 工具被盗用挖取加密货币,这些隐患你需要知道

阿里巴巴云原生

阿里云 云原生 Higress

魔搭×通义灵码:0代码基础、0门槛在线编程做应用

阿里巴巴云原生

阿里云 云原生 通义灵码

深度解析:通过 AIBrix 多节点部署 DeepSeek-R1 671B 模型

字节跳动开源

AIBrix 分布式推理 多节点部署 GPU调度 vLLM优化

云效构建在线调试来啦!保留构建现场,高效排查构建问题

阿里巴巴云原生

阿里云 云原生

飞行中换引擎:长城汽车 toC 业务中台同城双活架构升级

火山引擎开发者社区

从CockroachDB 看事务型数据库开发_数据库_杨旸_InfoQ精选文章