写点什么

从 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:004252

评论

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

kafka_2.13-3.2.0.tgz配置安装

Cjpler

签约计划第三季

重磅大咖来袭!阿里云生命科学与智能计算峰会精彩内容剧透

阿里云弹性计算

高性能计算 生命科学 AI制药 智能计算

【LeetCode】设计数字容器系统Java题解

Albert

LeetCode 8月月更

阿里前端智能化技术探索和未来思考

阿里技术

前端 智能化

博云入选Gartner中国DevOps代表厂商

BoCloud博云

云计算 容器 DevOps 云原生 云平台

外包学生管理系统架构文档

STM32+MPU6050设计便携式Mini桌面时钟(自动调整时间显示方向)

DS小龙哥

8月月更

你认同这个观点吗?大多数企业的数字化都只是为了缓解焦虑

雨果

数字化转型 数字化

DVWA 通关记录 2 - 命令注入 Command Injection

Todd-Lee

C++引用分析实例与案例刨析及使用场景分析详解

CtrlX

c c++ 后端 程序员进阶 8月月更

基于微前端qiankun的多页签缓存方案实践

vivo互联网技术

Vue 前端 微前端 qiankun

开源一夏 | 深入理解 Spring Cloud Gateway 的原理

悟空聊架构

开源 Gateway 认证 签约计划第三季

松哥手把手教你在 Vue3 中自定义插件

江南一点雨

Java Vue

Maven中的scope

六月暴雪飞梨花

maven 开源 技术 8月月更 scope

Geoffrey Hinton:深度学习的下一个大事件

OneFlow

人工智能 神经网络 深度学习

1对1视频源码——快速实现短视频功能提升竞争力

开源直播系统源码

软件开发 直播系统源码 一对一视频聊天系统

开源一夏 | GO语言框架中如何快速集成日志模块

Masters

开源

转转反爬攻防战

转转技术团队

爬虫

阿里云数据存储生态计划发布,助力伙伴数据创新

云桌派

阿里云

react常见面试题

helloworld1024fd

React

Gitee图床被屏蔽后,我搭建了一个文件系统并封装成轮子开源!

IT学习日记

Java springboot 签约计划第三季 seaweedfs文件系统 Gitee图床崩了

SAP 云平台上一种 Low Code Development(低代码开发)解决方案

汪子熙

低代码 云平台 lowcode SAP 8月月更

一体化在线政务服务平台,小程序容器技术加速建设步伐

Speedoooo

小程序 小程序容器 政务平台

C++关于函数参数的分析与函数重载进阶教程

CtrlX

c++ 编程语言 后端 cpp 8月月更

如何在技术上来保证LED显示屏质量?

Dylan

LED显示屏 led显示屏厂家

mysql进阶(二十一)删除表数据与数据库四大特性

No Silver Bullet

MySQL 8月月更 四大特性 表删除

10份重磅报告 — 展望中国数字经济未来

阿里技术

研究报告

流动性质押挖矿系统开发如何制作?单双币系统开发成熟技术

开发微hkkf5566

爆款视频怎么做?这里或许有答案!

博文视点Broadview

“纯C”实现——三子棋小游戏

一介凡夫

c 后端、 #开源 8月月更

OSI 七层模型和TCP/IP模型及对应协议(详解)

Five

TCP/IP TCP协议 8月月更

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