DBAを使用せずに多くの(10人以上の)開発者間でデータベースの変更を維持および同期するという問題に他の人がどのように取り組んでいるかについて興味がありますか?基本的に、誰かがデータベースに変更を加えたい場合、それを行うためのいくつかの戦略は何ですか?(つまり、「車」モデルを作成したので、適切なDDLをデータベースなどに適用したいと思います。)
私たちは主にPythonショップであり、ORMはSQLAlchemyです。以前は、ORMを使用してモデルを作成するような方法でモデルを作成していましたが、最近、次の理由でこれを廃止しました。
- ORMを使用して変更を追跡できませんでした
- ORMの状態がデータベースと同期していませんでした(たとえば、主にインデックスと一意の制約に関連する多くの違い)
- 開発者がチームへの電子メールを介してデータベースの変更を文書化しない限り、データベースの変更を監査する方法はありませんでした。
この問題に対する私たちの解決策は、基本的に、データベースへのすべての変更をチェックし、受け入れられたすべてのデータベース変更をaccepted_db_changes.sql
ファイルに適用する「ゲートキーパー」個人を配置することでした。これにより、データベース変更を行う必要がある開発者は、要求をproposed_db_changes.sql
ファイルに入れます。このファイルをチェックインし、更新されると、開発マシン上の個人データベースに変更を適用します。モデルにインデックスや制約を作成するのではなく、データベースに明示的に適用します。
データベーススキーマを維持するためのいくつかの戦略とは何か、そして私たちの戦略が合理的であると思われるかどうかを知りたいです。
ありがとう!