Syncing DDL accross Postgres shards












0















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?










share|improve this question







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.

























    0















    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?










    share|improve this question







    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.























      0












      0








      0








      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?










      share|improve this question







      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






      share|improve this question







      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.











      share|improve this question







      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.









      share|improve this question




      share|improve this question






      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.






















          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.










          draft saved

          draft discarded


















          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.










          draft saved

          draft discarded


















          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          ف. موراي أبراهام

          صرب

          كأس إنترتوتو