Syncing DDL accross Postgres shards
Our database writing needs exceed the capacity of a single Postgres cluster (since each cluster can only support 1 writer server).
To combat this, we've sharded our data across 8 separate Postgres clusters, which we call shards. These shards are completely independent Postgres clusters, that just happen to have the same schemas. Our data is such that there is no need for any cross-shard joins, foreign keys, etc. (For example, all records are tied to a customer, and all of a customer's records reside within a single shard, so there's no need to do cross-shard foreign key look ups.)
This approach has been working successfully in production, but there's one hiccup: aAny time that we need to make a change to the schema, we need to manually execute the DDL on every shard. To be clear: we don't need to synchronize the actual records, only schema changes, such as adding a column to a table.
Obviously, such a manual process is error-prone, and it's only a matter of time until our shard's schema start de-synchronizing via an accumulation of small human errors.
Is there an established way to automate this process?
postgresql schema sharding automation
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
Our database writing needs exceed the capacity of a single Postgres cluster (since each cluster can only support 1 writer server).
To combat this, we've sharded our data across 8 separate Postgres clusters, which we call shards. These shards are completely independent Postgres clusters, that just happen to have the same schemas. Our data is such that there is no need for any cross-shard joins, foreign keys, etc. (For example, all records are tied to a customer, and all of a customer's records reside within a single shard, so there's no need to do cross-shard foreign key look ups.)
This approach has been working successfully in production, but there's one hiccup: aAny time that we need to make a change to the schema, we need to manually execute the DDL on every shard. To be clear: we don't need to synchronize the actual records, only schema changes, such as adding a column to a table.
Obviously, such a manual process is error-prone, and it's only a matter of time until our shard's schema start de-synchronizing via an accumulation of small human errors.
Is there an established way to automate this process?
postgresql schema sharding automation
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
Our database writing needs exceed the capacity of a single Postgres cluster (since each cluster can only support 1 writer server).
To combat this, we've sharded our data across 8 separate Postgres clusters, which we call shards. These shards are completely independent Postgres clusters, that just happen to have the same schemas. Our data is such that there is no need for any cross-shard joins, foreign keys, etc. (For example, all records are tied to a customer, and all of a customer's records reside within a single shard, so there's no need to do cross-shard foreign key look ups.)
This approach has been working successfully in production, but there's one hiccup: aAny time that we need to make a change to the schema, we need to manually execute the DDL on every shard. To be clear: we don't need to synchronize the actual records, only schema changes, such as adding a column to a table.
Obviously, such a manual process is error-prone, and it's only a matter of time until our shard's schema start de-synchronizing via an accumulation of small human errors.
Is there an established way to automate this process?
postgresql schema sharding automation
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Our database writing needs exceed the capacity of a single Postgres cluster (since each cluster can only support 1 writer server).
To combat this, we've sharded our data across 8 separate Postgres clusters, which we call shards. These shards are completely independent Postgres clusters, that just happen to have the same schemas. Our data is such that there is no need for any cross-shard joins, foreign keys, etc. (For example, all records are tied to a customer, and all of a customer's records reside within a single shard, so there's no need to do cross-shard foreign key look ups.)
This approach has been working successfully in production, but there's one hiccup: aAny time that we need to make a change to the schema, we need to manually execute the DDL on every shard. To be clear: we don't need to synchronize the actual records, only schema changes, such as adding a column to a table.
Obviously, such a manual process is error-prone, and it's only a matter of time until our shard's schema start de-synchronizing via an accumulation of small human errors.
Is there an established way to automate this process?
postgresql schema sharding automation
postgresql schema sharding automation
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 10 mins ago
AlexanderAlexander
1011
1011
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Alexander is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "182"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Alexander is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f229909%2fsyncing-ddl-accross-postgres-shards%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Alexander is a new contributor. Be nice, and check out our Code of Conduct.
Alexander is a new contributor. Be nice, and check out our Code of Conduct.
Alexander is a new contributor. Be nice, and check out our Code of Conduct.
Alexander is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Database Administrators Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f229909%2fsyncing-ddl-accross-postgres-shards%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown