我发现可扩展性在任何地方都过度工程化,所以让我快速提出一种无意义的方法:
什么是自然分片键?通常是customer_id。如果客户或多或少孤立(在他们的系统使用中),这将工作正常。为每个客户创建一个数据库并自动执行架构更改。您是否拥有适合所有客户的数据?设置另一个仅保存此数据的数据库实例。从每个应用程序服务器建立两个连接
您(还)是否需要跨客户分析?每晚运行导出并离线处理。
可能不适用于所有人,但根据我的经验,它可以用于超过90%的业务应用程序。
哦......你选择的技术显然没关系,但我会选择开源/免费。
我们最近运行了一些基准测试来测量Postgres-XL的摄取率,我们可以使用16节点XL集群轻松计时达到9M行/秒或3TB /小时。有关详细信息,请参阅此博客文章 blog.2ndquadrant.com/load-data-postgres-xl-9m-rows-sec/