PostgreSQL 10: テーブル継承と宣言的パーティショニングでスケーリングする(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: How to scale PostgreSQL 10 using table inheritance and declarative partitioning 原文公開日: 2017/11/09 著者: Matvey Arye サイト: http://www.timescale.com/ — オープンソースの大規模時系列データベース「timescaledb」を開発する企業です。 timescale.comより PostgreSQL 10: テーブル継承と宣言的パーティショニングでスケーリングする(翻訳) PostgreSQLのパーティショニングの図 PostgreSQL 10がついにお披露目されました(原注: 本記事執筆後間もなく10.1がリリースされました)。PostgreSQL 10のリリースは、論理レプリケーション、JSONやJSONBでの全文検索サポート、クロスカラム統計、並列クエリのサポート強化といった根本的な新機能を含んでおり、いろいろな意味でエキサイティングです。全般に、PostgreSQL 10は賞賛に値するオープンソースデータベースとして着実な進歩を重ねており、その大きなマイルストーンと言えます。 PostgreSQL 10の素晴らしい新機能のひとつに、宣言的パーティショニング(declarative partitioning)があり、これによってPostgreSQLをビッグデータ級のボリュームにスケールさせることが本質的に簡単になります。 PostgreSQLをスケーラブルにすることは、将来の成功のために重要です。PostgreSQLでのスケーリングの難しさに、多くの開発者たちが長年不満の声を上げていました。その結果、スケーラビリティを約束する「NoSQL」ソリューション人気を博してそちらに流れる傾向が目立ち、みな熱心にNoSQLソリューションを採用したのです。しかしそうしたNoSQLのオプションは多くの場合、信頼性、パフォーマンス、使いやすさを犠牲にしていました(近年SQLに回帰する開発者が増えた理由のひとつがこれです)。 宣言的パーティショニングによって、PostgreSQL 10の基礎部分はこうした他の技術と渡り合えるようになりました。宣言的パーティショニングは、PostgreSQLが提供すべき堅牢さ、信頼性、強力な複合クエリ、おびただしいツールやコネクタのエコシステムを、さらに巨大なビッグデータアプリで最終的に利用できるようにするための第一歩であると考えられます。私はPostgreSQL上で動作する新しい時系列データベースの開発者として、PostgreSQLが追い求める方向性に深い感動を覚えます。 ここではっきりさせておきますが、一般的なパーティショニングは何もPostgreSQL 10が最初ではありません。多くのユーザーはテーブル継承を長年PostgreSQLテーブルのスケーリングに用いています。宣言的パーティショニングとは、そこに追加された興味深いオプションにすぎません。 本記事では、PostgreSQLのパーティショニングで用いられるこれら2つのオプションを吟味することにします。 本記事では以下に重点を置きます。 PostgreSQLが自然にスケーリングしない理由(データのパーティショニングから始める必要がある理由) テーブル継承によるパーティショニングのしくみ(PostgreSQL 10の主要なオプション) PostgreSQL 10の宣言的パーティショニングのしくみ 新しい宣言的パーティショニングの制限事項 私たちは、さまざまな分野の専門知識を兼ね備えた開発者がPostgreSQLに集結するという経験を得られたので、本記事では基本的な事項についていくつか解説したうえで、そうした詳細部分についても追うことにします。もちろん、最初のセクションから先の部分については皆さまの専門性のレベルに応じて適宜読み飛ばしていただいて結構です。 メモ 宣言的パーティショニングは、PostgreSQLパーティショニングの新しい進路の第一歩に過ぎません。これを基礎として、この先さらに改良が重ねられる予定です。しかし本記事では、そうした輝かしい将来計画の方ではなく、あくまでPostgreSQL 10の現状についてのみ考察いたします。 PostgreSQLだけでは自然なスケールがうまくいかない理由 これは、RAMとディスクの間のパフォーマンスの違いに由来します。 … Continue reading PostgreSQL 10: テーブル継承と宣言的パーティショニングでスケーリングする(翻訳)