老师您好,在flask sqlalchemy分库分表以及分布式数据库相关的最佳实践方面有哪些建议?

来源:6-1 什么是进程

null_386

2019-06-04

老师您好,在flask sqlalchemy分库分表以及分布式数据库相关的最佳实践方面有哪些建议?

写回答

2回答

null_386

提问者

2019-06-14

感谢七月老师的解答,后面结合我的业务特点,决定使用分区的方式来解决。

MySQL单表记录在1000万条以下可以获得较好的性能;

预估的每个商户体量会比较大,所有商户数据放在一起,单表性能太差;

单个商户订单预估的每月是900万条记录;

使用关系型数据库,不使用nosql,因为交易类型的数据,需要使用事务来保证交易的完整性;nosql虽然具有良好的扩展性,但是事务的保证是弱点;

按月分区的另外一个好处是,热点和活跃数据往往是最近几个月的数据,历史数据的查询频率非常低,历史月份的数据在后期清理和迁移也很方便,方便为主库腾出更多可用空间;

另外flask以及其它使用ORM的框架来做分表,会大大增加代码的复杂度和维护成本。在ORM上也实现了分表的方案,也可以实现动态按月分表,最终没有采用,也是因为不想增加代码的维护成本和复杂度。把分表的工作交给mysql底层去处理。

https://github.com/kevin386/flask-sharding-table/blob/master/demo.py

另外我把不同领域产生的数据放到不同的库,暂时会考虑使用同一个实例,如果后期需要扩容再分实例,把不同领域的库按实例拆分出去。

非常喜欢七月老师的课程讲解,非常有深度。希望有更多机会向七月老师请教和交流,留下QQ: 343469394

0
1
7七月
分区这个属于数据库自带的功能,是个不过的选择。你做什么业务的,这个数据量规模不小啊
2019-06-17
共1条回复

7七月

2019-06-05

分库、分表和分布式数据库不是一个概念。SQlalchemy支持连接多个数据库,但是这不是分库、分表。我不知道你说的是 水平切割、还是垂直切割?这需要具体一些,还有就是最佳实践是这个概念挺模糊的。

0
0

Python Flask高级编程之从0到1开发《鱼书》精品项目

7月老师深入浅出剖析Flask核心机制,和你一起探讨Python高级编程

2735 学习 · 1267 问题

查看课程