Heroku上的数据库分片

rav*_*ikh 10 database partitioning sharding heroku heroku-postgres

在接下来的几个月中,我们的应用程序将达到我们需要对数据库进行分区的大小.我们使用Heroku进行托管,Node.js/PostgreSQL堆栈.

从概念上讲,我们的应用程序让每个逻辑分片代表一个用户以及与该用户关联的所有数据(我们的应用程序的每个用户生成大量数据,用户之间没有交互)是有意义的.我们需要保留用户对其数据进行复杂的临时查询的能力.我读了很多文章,比如这篇关于分片的文章:http://www.craigkerstiens.com/2012/11/30/sharding-your-database/

从概念上讲,我理解Sharding的工作原理.但是在实践中我不知道如何在Heroku上实现这个,就我需要编写什么代码以及我需要修改的应用程序的哪些部分而言.一个教程或一些指针的链接将非常感激.

以下是我已经看过的一些资源:

Chr*_*ers 0

我不确定是否会将其称为“分片”。

在 LedgerSMB 中,我们是这样做的。每个公司(商业实体)都是一个独立的数据库,具有完全独立的数据。公司之间无法共享数据。一个 postgreSQL 集群可以运行任意数量的公司数据库。我们有一个管理界面,用于创建数据库并加载架构。管理界面还可以创建新用户,这些用户可以在公司之间共享(可选)。我不太清楚在 Heroku 上的数据库之间共享用户效果如何,但我在如何使用 PostgreSQL 方面包含了该细节。

所以这是一个可行的方法。

您真正需要的是以自动化方式启动数据库和管理用户的东西。从那里,您可以要求用户指定一个公司名称,您可以根据需要将其映射到数据库(例如,此映射可以存储在另一个数据库中)。

我知道这是相当高的水平。不过,它应该可以帮助您入门。