【ポリグロットえいぞくせい】

ポリグロット永続性 とは?

公開:
💡 料理ごとに道具を選ぶ — 包丁・フライパン・オーブンを使い分けるシェフの流儀
📌 このページのポイント
ポリグロット永続性 — 用途別DBの使い分け アプリケーション データの種類で使い分け MySQL / RDB ユーザー・注文データ Redis セッション・キャッシュ Elasticsearch 全文検索インデックス MongoDB 柔軟なドキュメント 1つのアプリが複数のDBを目的別に使い分ける
ポリグロット永続性:データの種類に応じて最適なDBを選ぶ
ひよこ ひよこ
ポリグロット永続性って、何か難しそうな名前だけど何のこと?
ペンギン先生 ペンギン先生
「1つのアプリで複数のデータベースを使い分けること」だよ。たとえばユーザー情報はMySQLに、セッションRedisに、検索インデックスElasticsearchに、という風にデータの特性に合わせてDBを選ぶ考え方だね。
ひよこ ひよこ
なんで全部同じDBにしないの?
ペンギン先生 ペンギン先生
それぞれのDBには得意・不得意があるからだよ。RDBはトランザクションが強いけど、大量の全文検索は苦手。Redisキャッシュセッション管理がとても速いけど、複雑な集計は向かない。用途に合ったDBを使うほうが効率がいいんだ。
ひよこ ひよこ
マイクロサービスと関係があるの?
ペンギン先生 ペンギン先生
すごく相性がいいんだよ。マイクロサービスでは各サービスが独立したDBを持つ「Database per Service」パターンがよく使われるから、サービスAはPostgreSQL・サービスBはMongoDBと自由に選べるんだね。
ひよこ ひよこ
デメリットはないの?
ペンギン先生 ペンギン先生
あるよ。まず運用コストが上がるんだ。複数のDBをそれぞれ監視・バックアップ・チューニングしなきゃいけない。それに複数DBにまたがるトランザクション管理も難しくなるね。「使い分ける分、覚えることも増える」というトレードオフがあるんだよ。
ひよこ ひよこ
最近はやりやすくなったって聞いたけど、なぜなの?
ペンギン先生 ペンギン先生
クラウドのマネージドDBサービスが充実したからだよ。AWSならRDS・DynamoDB・ElastiCacheがそれぞれフルマネージドで使えるから、運用負担がだいぶ下がったんだ。昔は自分でサーバーを立てて管理するのが大変だったけど、今は選んで接続するだけで使い始められるね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ポリグロット永続性」って出てきたら「データの種類に合わせて複数のDBを使い分けるアーキテクチャ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Polyglot Persistence」 = 多言語的永続化
💬 Polyglot(ポリグロット)は「複数の言語を話す人」という意味で、それをDBに応用して「複数のデータストアを使いこなす」というニュアンスだよ
← 用語集にもどる