请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

2回答

提问者 null_386 2019-06-14 21:49:54

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

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

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

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

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

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

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

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

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

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

0 回复 有任何疑惑可以回复我~
  • 7七月 #1
    分区这个属于数据库自带的功能,是个不过的选择。你做什么业务的,这个数据量规模不小啊
    回复 有任何疑惑可以回复我~ 2019-06-17 21:53:01
7七月 2019-06-05 01:17:44

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信