Apache ShardingSphere 是一个开源生态系统,由一套分布式数据库解决方案组成,包括 JDBC、Proxy & Sidecar(Planning)3 个独立产品。
它们都提供了数据横向扩展、分布式事务和分布式治理的功能,适用于Java同构、异构语言、云原生等多种场景。
Apache ShardingSphere 旨在在分布式系统中合理地充分利用现有数据库的计算和存储能力,而不是一个新的数据库。关系型数据库作为企业的基石,依然占据着巨大的市场份额。因此,我们更愿意关注它的增量而不是完全翻转。
Apache ShardingSphere 从 5.x 版本开始专注于可插拔架构,特性可以嵌入到项目的灵活性中。目前支持的数据分片、副本查询、数据加密、影子测试等特性,以及支持的MySQL、PostgreSQL、SQLServer、Oracle等SQL方言/数据库协议,都是通过插件编织而成的。
MyCAT 是一款开源软件,面向企业的“大型数据库集群”。
MyCAT是一个强制数据库,它是MySQL的替代品,支持事务和ACID。
MyCAT作为企业数据库MySQL集群,可以替代昂贵的Oracle集群。
MyCAT也是一种新型的数据库,它看起来就像一个融合了内存缓存技术、NoSQL技术和HDFS大数据的SQL服务器。
MyCAT作为一种新型的现代企业数据库产品,与传统的数据库和新的分布式数据仓库相结合。
Vitess 是一个数据库集群系统,旨在通过通用的分片机制实现 MySQL 的水平扩展。
通过封装分片路由逻辑,Vitess 使得应用代码和数据库查询对数据在多个分片中的分布保持透明。
使用 Vitess,您甚至可以根据需要拆分和合并分片,且切换操作仅需几秒钟,具有原子性。
自 2011 年以来,Vitess 一直是 YouTube 数据库基础设施的核心组件,并且已经扩展到包括数万个 MySQL 节点。
欲了解更多关于 Vitess 的信息,请访问 vitess.io。
dble是上海爱可生信息技术股份有限公司基于MySQL的高可扩展性的分布式中间件,存在以下几个优势特性:
数据水平拆分 随着业务的发展,您可以使用dble来替换原始的单个MySQL实例。
兼容MySQL 与MySQL协议兼容,在大多数情况下,您可以用它替换MySQL来为你的应用程序提供新的存储,而无需更改任何代码。
高可用性 dble服务器可以用作集群,业务不会受到单节点故障的影响。
SQL支持 支持SQL 92标准和MySQL方言。我们支持复杂的SQL查询,如group by,order by,distinct,join,union,sub-query等等。
用户中心
用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:
User(uid, login_name, passwd, sex, age, nickname, …)
其中:
uid 为用户ID,主键
login_name, passwd, sex, age, nickname 等用户属性
数据库设计上,一般来说在业务初期,单库单表就能够搞定这个需求,典型的架构设计为:
+-------------+
| user-center |
+-------------+
|
|
v
+-------------+
| user-db |
+-------------+
移动互联网时代,海量的用户每天产生海量的数量,比如:
用户表
订单表
交易流水表
以支付宝用户为例,8亿;微信用户更是10亿。订单表更夸张,比如美团外卖,每天都是几千万的订单。淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因为这时它的BTREE索引树高在3~5之间。
常见方案
既然一张表无法搞定,那么就想办法将数据放到多个地方,目前比较普遍的方案有3个: