NewSQL 被定义为新一代的数据库。
其主要特征应该是:
支持SQL;
具有可扩展性;
支持事务执行四要素/ACID Transaction;
高可用
现有数据库存在的问题
像MySQL、Oracle、PostgreSQL这样的关系数据库,它们的问题是很难扩展。尽管我们有分片技术,还有youtube/vitess和MySQL proxy等,但它们都不支持分布式事务以及cross-node join连接。
像HBase、MongoDB以及Redis这样的NoSQL数据库:它们可扩展,但不支持SQL,同时也舍弃了事务的一致性
可以看出,NewSQL的出现,就是想解决现有数据库存在的问题,尽可能的实现两种数据库的优点,以符合现在的一些场景功能需求。
NewSQL is a class of modern relational database management systems that seek to provide the same scalable performance of NoSQL systems for online transaction processing (OLTP) read-write workloads while still maintaining the ACID guarantees of a traditional database system。(wikipedia)
NewSQL是指这样一类新式的关系型数据库管理系统,它针对OLTP实现读-写工作负载,追求提供和NoSQL系统相同的扩展性能,且仍然保持传统数据库支持的ACID特性。
NewSQL的扩展性与NoSQL相当,并同时保留了ACID特性。
VoltDB基于H-Store,号称比当前数据库产品的吞吐量高45倍,同时又具有很高的扩展性。它的特性主要有以下几点:
高吞吐、低延迟:通过内存计算,存储过程和串行数据访问实现。
可扩展性:自动分区和复制,保证性能和可扩展性。
高可用性:同步的多主复制(在VoltDB中叫K-safety)。
持久化:数据库快照与命令日志(command log)的创新技术组合
CockroachDB
CockroachDB in Comparison
MongoDB | PostgreSQL | CockroachDB | |
---|---|---|---|
Automated Scaling | Yes | No | Yes |
Automated Failover | Yes | Optional | Yes |
Automated Repair | Yes | No | Yes |
Strongly Consistent Replication | No | No | Yes |
Consensus-Based Replication | No | No | Yes |
Distributed Transactions | No | No | Yes |
ACID Semantics | Document-only | Yes | Yes |
Eventually Consistent Reads | Yes | Yes | No |
SQL | No | Yes | Yes |
Open Source | Yes | Yes | Yes |
Commercial Version | Optional | No | Optional |
NewSQL 适合的场景有: 高频率请求、短事务的应用,像金融、零售、Web2.0等,以及流式数据应用,像推荐引擎、实时广告平台、点击流处理、欺诈交易检测等。
NewSQL是否能像所声称的强大,能完全取代传统关系数据库和NoSQL呢?我觉得现在还不能,但是,NewSQL凭借自身的优点,已经在很多领域和场景大放异彩,并且,也会有越来越多的公司和项目会使用NewSQL。
参考链接
http://blog.csdn.net/linuxheik/article/details/52578810
http://blog.csdn.net/dc_726/article/details/41909719
https://www.cockroachlabs.com/docs/stable/cockroachdb-in-comparison.html