Photo by Giammarco Boscaro
DBMS
MySQLやPostgreSQLをLinuxにインストールする簡単な手順は、rpmやapt-getなどのディストリビューション標準パッケージツールを利用することです。
メジャーなLinuxディストリビ …
kubernetesでシステム構築する際に、意外に難しいのがデータベースの構築やバックアップ&リストアです。
DBインスタンスのコンテナを立てることじたいは簡単なのですが、論理バックアップでデータを移 …
PostgreSQLやMySQLなどのデータベースのバックアップ&リストアにはいくつか方法がありますが、SQL形式の論理バックアップを取得する方法が一般的です。
とくに、DBMSを別のサーバーに構築し …
MySQL・PostgreSQLなどのDBMSは、1OSインスタンスに1つだけセットアップする構成が一般的なため、複数のDB環境を切り替えたい場合や、別バージョンの動作検証をしたい場合などにコンテナを …
レコード数の多いアプリケーションの場合、データベースの一部を切り出して取得したいケースがあります。
このような場合、一度バックアップ用のミニテーブルを作成する手順が手軽です。
PostgreSQLのバ …
Railsなどのアプリケーションで、古いデータを保管するためのアーカイブテーブルを作りたい場合があります。
ridgepoleのスキーマ定義はrubyのDSLになっているため、以下のようにテーブル名の …
おなじみのとおり、Ruby on Railsの各モデルのidは自動生成される連番数値(INTEGER)がデフォルトです。ただ、Rails 4以降では、設定しだいでUUIDも使えます。
ある程度以上の規 …
ridgepoleはスキーマ定義ファイルの設定をそのままRDBMSに反映できるツールです( ridgepoleのメリットと使い方 参照)。
運用中のテーブル名やカラム名をリネームしたい場合には注意が必 …
ロジカルレプリケーション機能を利用すると、テーブル単位でレプリケーション構成をとれます。
一般的なRead/Writeスプリット構成のほか、アプリケーションフレームワークから見て単一DB内に外部マスタ …
PostgreSQLのアップグレードには、公式ツール pg_upgrade を利用できます。
ただし、pg_upgradeを実行する前提に以下の条件があり、 公式コンテナイメージ では実行できません。 …
PostgreSQlのロジカルレプリケーションは、ALTER PUBLICATION / ALTER SUBSCRIPTIONを利用して、運用開始後にテーブル追加などの変更を行えます。
(セットアップ …
PostgreSQLには商用DBと同様のスキーマというネームスペースがあります。MySQLはCREATE SCHEMAがCREATE DATABASEの別名であり、スキーマのレイヤがありません。
以下 …
ストアドプロシージャ、ストアドファンクションは、DBに登録(stored)する関数で、PostgreSQLの標準機能を利用する場合、PL/pgSQLで書きます。
ストアドプロシージャの使いどころ スト …
ネストしたテーブル設計では、1:Nの構造になるレコードが頻発します。
その場合の素朴なSQLは以下のような記述になるでしょう。
SELECT categories.name, …
複数行を一括でINSERTする際、配列を利用できます。配列型のカラムではなく、複数行を投入する方法です。
PostgreSQLにはunnest()という関数があり、配列を行に変換できます。
たとえば、 …
PostgreSQLのパーティショニングはバージョンアップごとに強化されてきています。
アプリケーションに合わせてデータアクセスを局所化できれば、データが成長しても性能を維持しやすくなります。
パーテ …
PostgreSQLはリファレンスが非常に充実していますが、サポートする機能が多彩であるため個別のケースの挙動が自明ではないことがあります。
ストアド関数は複雑なケースを扱うことが多く、挙動の観察が重 …
PostgreSQLの COPY コマンドは、テーブルデータをCSVファイルなどの形式でインポート/エクスポートする機能です。
COPYと\copyがあり、COPYはサーバー側、\copyはpsqlク …
While PL/pgSQL has LOOP flow for recursive operations, SQL or psql doesn’t have one.
If you want to …