大厂都是如何分库分表的?

上周有客户问我什么是分库分表,我就给他讲了我遇到的困难和了解到的信息。
你提到的文件非常全面。
让我帮助您了解要点。
我将给出一些我见过的例子,而不是看理论。

垂直分区怎么样?听起来不错,但实际操作起来确实不太好。
比如我在2 02 3 年在上海的一个购物中心做的项目中,用户;我为产品和订单的每个数据库建立了一个垂直数据库。
结果呢?开发人员每次查订单都要翻三遍数据库,而且还要写更多的接口。
最糟糕的是销售分配。
尝试两阶段提交后,数据库直接关闭。
后来他们咬牙求助于TSharding,已经无法生存了。
优点是解耦是真正的解耦;但进步量是爆炸性的,用过的人都知道。

横向细分确实很好,但策略的选择取决于业务。
去年之前,杭州某物流公司帮助开发了分库、分表。
他们的订单表中有 2 000 万条数据直接包含。
一开始我想按ID范围来切,但是最近三个月的数据占总访问量的7 0%,全部被拆分到不同的数据库中,查询要跨数据库。
最后利用Hash取模得到用户ID模3 ;将新用户添加到0~1 库,将老用户添加到2 号库。
这是最常见的分布;但是,如果您的设备上的手机已关闭,则每个人都必须重新计算哈希值。
这个动作可以说服9 0%的人。

你无法真正清楚主键。
我见过的最糟糕的事情是一个使用自己造成的 ID 的食品配送平台。
将数据库分区为表后;订单号完全混乱,直接对商家造成损害。
后来他们开发了分布式雪花算法,终于无缝地拿到了ID。
将数据库分区为表后;主键必须是全局唯一的,所以不要偷懒。

工具方面,Sharding-JDBC确实很好用。
2 02 2 年我带队去深圳的时候;我用它来帮助电子商务系统创建数据库和电子表格。
自动化 SQL,无需更改开发代码仅路由。
但如果涉及到数据库传输等复杂情况。
你将不得不加班来处理这些工具。

最后给大家一个提示:不要急于添加数据库和表。
首先,你能使用缓存和写隔离等简单的解决方案吗?我遇到的错误是有一个小系统直接分配数据库和表。
结果分割完成后维护成本翻倍,最终不得不报废。
这取决于你。

数据库有哪些 常用数据库有哪些

MySQL简单易用,小公司常用。
Microsoft 的主要制造商 SQL Server 是企业级的选择。
数灿数据库强C++弱SQL,适合小型企业。
神谕,至高无上的选择,是千辛万苦才选择的。
FastDB,快速存储,关键数据不是小项目。
Memcached 是一种缓存技术,可加快访问速度。
归来,全能王者,缓存,数据中心。

聊一聊:数据库都有哪些类型?

关系型数据库是一种具有固定数据结构的数据库,如Excel表,通过SQL语言进行操作,保证数据的强一致性。
例如,MySQL 是小型企业的首选。
它是免费且易于使用的。

非关系数据库是宝库,您可以在其中存储各种数据,包括照片和 JSON 格式的数据。
它具有高度的灵活性和可扩展性,适合MongoDB等快速发展的互联网公司。

还有NewSQL和云原生数据库,它们是新旧结合,有用且强大。

数据库的选择取决于您的业务需求。
例如,支付系统应该使用关系类型,日志系统应该使用非关系类型。
不要盲目追随趋势,而是先考虑您的数据量和业务特征,然后再决定使用什么。