[解決済み] 開発スナップショットのテーブルの一部だけをPostgresでダンプする。
質問
実稼働環境では、私たちのデータベースは数百ギガバイトの大きさです。開発およびテストのために、このデータベースのスナップショットを作成する必要がありますが、それは機能的に同等で、サイズは 10 または 20 ギガだけです。
課題は、ビジネス エンティティのデータが多くのテーブルに散らばっていることです。ある種のフィルタリングされたスナップショットを作成し、そのスナップショットから いくつかの のみがダンプに含まれるようにしたいのです。そうすれば、開発およびテスト用に毎月新鮮なスナップショットを得ることができます。
例えば、このような多対多の関係を持つエンティティがあるとします。
- 会社にはN個の部門がある
- 事業部にはN人の従業員がいます。
- 従業員にN個の出勤記録がある
1000社、2500部門、175000人の従業員、そして何千万もの出勤記録があると思います。たとえば、最初の 100 社を取得するための複製可能な方法が必要です。 とその構成部門、従業員、および出勤記録をすべて引き出すことができる再現可能な方法が必要です。 .
現在、スキーマのためにpg_dumpを使用しています。そして、小さなテーブルからすべてのデータを取り出すために、-disable-triggersと-data-onlyでpg_dumpを実行します。私たちは速い開発サイクルを持ち、カスタムスクリプトが壊れやすく、古くなりやすいことを懸念しているので、データの一部を取り出すためにカスタムスクリプトを書く必要がないようにしたいのです。
どうすればよいのでしょうか?データベースから論理パーティションを引き出すのに役立つサード パーティ製ツールはありますか。これらのツールは何と呼ばれていますか?
一般的なアドバイスもお願いします。
どのように解決するのですか?
大きなテーブルでは、COPYコマンドを使用してサブセットを取り出すことができます。
COPY (SELECT * FROM mytable WHERE ...) TO '/tmp/myfile.tsv'
COPY mytable FROM 'myfile.tsv'
https://www.postgresql.org/docs/current/static/sql-copy.html
本番環境のサブセットを引っ張ってくるだけでなく、開発用データのセットを維持することを検討すべきです。 ユニットテストを書いている場合、テストに必要な同じデータを使用して、すべての可能なユースケースをヒットしようとすることができます。
関連
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] PostgreSQLデータベースへのSQLダンプのインポート
-
[解決済み] 'ユーザー "postgres" のパスワード認証に失敗しました'
-
[解決済み] PostgresでInsert文のUUIDを生成する?
-
[解決済み] Postgres の全テーブルの行数を求めるには?
-
[解決済み] 最新バージョンのOS X (Yosemite または El Capitan) をインストールした後に `pg_tblspc` が見つからない。
-
[解決済み】psql: FATAL: ユーザー "postgres" の Ident 認証に失敗しました。
-
[解決済み】データベースをgit(バージョン管理)下に置くには?)
-
[解決済み】PostgreSQLのテーブルから特定の行をINSERT SQLスクリプトとしてエクスポートする。
-
[解決済み] 特定のテーブルとエントリのデータベースダンプを作成する Postgres
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
postgresql 重複データ削除 ケーススタディ
-
PostgreSQLのテーブルをパーティション分割する3つの方法
-
Postgresqlへのリモートアクセスの設定方法(ファイアウォールの設定またはOFFが必要です。)
-
PostgreSQLでデータの一括インポートのパフォーマンスを向上させるn個の方法を説明します。
-
GROUP BY句での定数使用に関するPostgreSQLの特別な制限について説明します。
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLのINSERT ON CONFLICT UPDATE(upsert)は除外された値をすべて使用します。
-
[解決済み] Postgresデータベースの全テーブルを切り捨てる
-
[解決済み] PostgreSQLでタイムスタンプの差を秒単位で求める
-
[解決済み] PostgreSQLにデータベースが存在するかどうかをシェルで確認する