我的B2B应用程序具有以下要求:
我们在Rails5上。 Mysql 5.6是我们的主要生产数据库。
以下是表user_preferences
的架构client_id,user_id,pref1,pref2,.. pref10,created_at,updated_at
首选项列的总数为10.首字段数据类型为tinyint,int。 还有2个日期时间字段。
以上所有数据目前都存储在一个表格中。
随着越来越多的客户加入我们的应用程序,我们预计这个表很快就会变大。单个客户端可能拥有1000万用户。
问题:
架构将类似于:
client1_user_preferences
user_id,pref1,pref2,.. pref10,created_at,updated_at
rails activerecord是否支持这种方式?如果没有gem /插件,我也会接受其他建议。
为什么我要根据客户端分隔表格?
我们有业务用例,通过在使用应用程序服务后将表移动到自己的数据库,为客户提供管理自己用户数据的选项。使用分片表,迁移将非常顺利。
在此表上执行大量读写操作。使用这种方法,每个表的数据将更少,因此更快的读取,写入查询。
答案 0 :(得分:0)
由于您的愿望很高且预算很低,我建议您立即实施某些内容。但计划在6个月内重新设计整个设计。
您现在实施的“某些东西”会让您对所遇到的陷阱有所了解,并教会您在重新设计中需要修复的内容。它可以指出您正在使用的软件的限制。 (一般来说,大项目,必须抛弃任何位于客户端软件和数据库之间的第三方软件包。它对于概念验证很方便,但在扩展时会崩溃)
并且不要认为第二步是最后一次剧变 - 计划再次在另外6个月内重建整个系统。
对大型项目造成最大伤害的是早期设计陷入困境,但在无法进一步扩展的情况下却没有意愿将其抛弃。