我正在整理一份关于开发Web应用程序的提案。
该应用程序将在多个国家/地区推出,并且一些客户的合作伙伴和(据称;我不是律师)某些相关国家/地区都有关于个人数据存储位置的规则。结果是有一个硬性要求,即某些国家/地区用户的特定数据存储在该国家/地区的服务器上。 (听起来他们可以在任何国家/地区缓存数据了 - 但是我打算在主数据中心安装一个Redis内存存储库。)有些数据(例如信用卡详细信息)将会另外要加密,但这似乎对它们的存储位置没有任何影响。
根据当前的要求,来自一个国家/地区的用户实际上不会与来自其他国家/地区的用户进行交互,因此一个明显的选择是在每个国家/地区运行不同的应用程序实例,完全独立。从架构的角度来看,这更简单,但更难管理,并且整体服务器成本会更高。如果客户希望报告所有国家/地区的所有用户,或者最终他们想要合并数据库,并且用户的主键必须更改,则可能会变得复杂。并非不可能,但这可能是一种痛苦。
可能更好的是拥有一个中央数据库,其中包含客户认为可以在一个地点(北美某处)托管的所有信息,然后每个国家的卫星数据库保存客户需要保存的信息。家”。
因此主数据库将拥有主用户表,仅包含PK和国家/地区代码,并且还有许多其他表。每个本地数据库都有一个“用户详细信息”表,带有外键(主数据库上的主用户表)和一堆其他个人身份信息列,以及用户名,电子邮件地址,密码等。
然后,客户可以推送其他数据存储在卫星位置,其中一些可能是用户一对多,也可能是用户多对多。
我的问题:
答案 0 :(得分:0)
相应地回答你的问题:
看起来你可以在Django做的事情(我喜欢Django所以我可能不是最好的意见) - 也许以下内容会说服你(或不)。
微服务方法? "用户"的多个实例资源多服务每个都有它自己的数据库(我听说过成本,但也许?)。
您可以使用Django身份验证后端(including wirting your own)做很多事情 - 有一个"远程"您可以使用auth后端作为示例。阅读有关无状态身份验证(JWT)。
请看第1点和第2点。