今日のソフトウェア開発における最大のトレンドの 1 つは、 PostgreSQLが事実上のデータベース標準として登場したことです。PostgreSQL をあらゆる用途に使用する方法については、いくつかのブログ記事が投稿されていますが、なぜこのようなことが起きているのか (そして、さらに重要なことに、なぜこれが重要なのか) についてはまだ投稿されていません。
今まで!
01 PostgreSQLは事実上のデータベース標準になりつつある
02 すべてがコンピューターになる
03 PostgreSQLの復活
04 自由になり、未来を築き、PostgreSQL を活用する
05 Timescaleは「時系列用PostgreSQL」としてスタートしました
06 時系列を超えて拡張された時間スケール
07 Timescale が「PostgreSQL を強力に」
08 コーダ: ヨーダ?
過去数か月にわたって、「PostgreSQL for Everything」は開発者の間で大きな声援となってきました。
「PostgreSQL は単なるリレーショナル データベースではありません。データベース領域全体を巻き込む可能性を秘めたデータ管理フレームワークです。『あらゆる用途に PostgreSQL を使用する』というトレンドは、少数のエリート チームに限定されるものではなく、主流のベスト プラクティスになりつつあります。」
(
「スタックを簡素化し、可動部分を減らし、開発をスピードアップし、リスクを減らし、スタートアップでより多くの機能を提供する 1 つの方法は、「すべてに Postgres を使用する」ことです。Postgres は、最大数百万のユーザーを対象に、Kafka、RabbitMQ、Mongo、Redis など、多くのバックエンド テクノロジーを置き換えることができます。」
(
(
「私が初めて Postgres について聞いたとき (MySQL が圧倒的に優勢だった頃)、それは「数学オタクが作ったデータベース」と説明されていました。そして、私はこう思いました。そうだ、まさにそういう人たちにデータベースを作ってもらいたいのだ。」
(
ソース )
「驚くべき復活を遂げました。NoSQL が消滅し、Oracle が MySQL を所有するようになった今、他に何が残っているのでしょうか?」
(ソース)
「Postgres は単なるリレーショナル DB ではありません。それは生き方なのです。」
(ソース)
堅牢な基盤と、ネイティブ機能および拡張機能による汎用性により、開発者は PostgreSQL をあらゆる用途に使用できるようになりました。これにより、複雑で脆弱なデータ アーキテクチャが、単純明快なものに置き換えられます。
これは、昨年、プロの開発者の間で最も人気のあるデータベースのランキングで PostgreSQL が MySQL からトップの座を奪った理由 (回答者数 60,369 人) を説明するのに役立つかもしれません。
過去 1 年間に大規模な開発作業を行ったデータベース環境はどれですか。また、今後 1 年間に作業したいデータベース環境はどれですか。回答者の 49 % 以上が PostgreSQL と回答しました。(
これらの結果は、2023 年の Stack Overflow 開発者調査によるものです。時系列で見ると、過去数年間で PostgreSQL の採用が着実に増加していることがわかります。
PostgreSQL は、2020 年から 2022 年にかけて Stack Overflow の開発者調査の回答者の間で 2 番目に人気のあるデータベースでしたが、その使用量は着実に増加しています。出典:
これは、小規模なスタートアップ企業や趣味人の間でのみ起こっている傾向ではありません。実際、PostgreSQL の使用はあらゆる規模の組織で増加しています。
企業規模別の PostgreSQL 使用率。(
Timescaleにとって、この傾向は目新しいものではありません。私たちは10年近くPostgreSQLを信奉してきました。それが、私たちがPostgreSQLを基盤としてビジネスを構築し、
PostgreSQL をあらゆる用途に使用する方法についてはいくつかのブログ投稿がありますが、なぜこれが起こるのか (そして、さらに重要なことに、なぜこれが重要なのか) についてはまだ投稿されていません。
今まで。
しかし、なぜこのようなことが起きているのかを理解するためには、さらに根本的な傾向と、その傾向が人間の現実の根本的な性質をどのように変えているのかを理解する必要があります。
あらゆるもの、つまり車、家、都市、農場、工場、通貨、所有物がコンピューター化されつつあります。私たち自身もデジタル化されつつあります。毎年、私たちは自分のアイデンティティや行動をデジタル化しています。物を買う方法、楽しむ方法、芸術作品を集める方法、疑問の答えを見つける方法、コミュニケーションやつながり方、自分らしさを表現する方法などです。
22年前、「ユビキタスコンピューティング」というアイデアは大胆に思えました。当時、私はMIT AIラボの大学院生で、
それ以来、多くのことが変わりました。コンピューターは今や、机の上、ポケットの中、持ち物の中、そして「クラウド」の中など、いたるところに存在しています。そのことは私たちが予測していたことです。
しかし、これらの変更の二次的影響は、私たちのほとんどが予想していたものとは異なりました。
ユビキタス コンピューティングにより、ユビキタス データが生まれました。新しいコンピューティング デバイスが登場するたびに、人間のデータ、マシン データ、ビジネス データ、環境データ、合成データなど、現実に関するより多くの情報が収集されます。こうしたデータは世界中にあふれています。
データの氾濫により、データベースのカンブリア爆発が起こりました。これらの新しいデータ ソースはすべて、それらを保存するための新しい場所を必要としています。20 年前には、実行可能なデータベース オプションは 5 つ程度しかありませんでした。今日では、数百のデータベースがあり、そのほとんどは特定のユース ケースやデータに特化しており、毎月新しいものが登場しています。
データとデータベースの増加により、ソフトウェアはより複雑になっています。ソフトウェアのワークロードに適したデータベースを選択することは、もはや容易ではありません。代わりに、開発者は、リレーショナル データベース (信頼性のため)、非リレーショナル データベース (スケーラビリティのため)、データ ウェアハウス (分析機能のため)、オブジェクト ストア (古いデータを安価にアーカイブする機能のため) など、複雑なアーキテクチャを寄せ集める必要があります。このアーキテクチャには、時系列データベースやベクトル データベースなど、より特殊なコンポーネントが含まれる場合もあります。
複雑性が高まると、構築にかかる時間が短くなります。複雑なアーキテクチャは脆弱になり、より複雑なアプリケーション ロジックが必要になり、開発時間が短くなり、開発が遅くなります。複雑さはメリットではなく、実際のコストです。
コンピューティングがますます普及するにつれ、私たちの現実はコンピューティングとより密接に結びついています。私たちはコンピューティングを私たちの世界に持ち込み、私たち自身もその世界に持ち込んでいます。私たちはもはや単なるオフラインのアイデンティティではなく、オフラインとオンラインで行うことのハイブリッドです。
ソフトウェア開発者は、この新しい現実における人類の先駆者です。私たちは、この新しい現実を形作るソフトウェアを構築する者です。
しかし、開発者は現在、データが溢れかえり、データベースの複雑さに溺れてしまっています。
これは、開発者が未来を形作るのではなく、配管の管理にますます多くの時間を費やしていることを意味します。
私たちはどうやってここへ来ましたか?
ユビキタス コンピューティングはユビキタス データをもたらしました。これは一夜にして起こったのではなく、数十年にわたって連鎖的に起こりました。
それぞれの波で、コンピューターはより小型化、より高性能化、そしてより遍在化しました。それぞれの波は、前の波の上に構築されました。パーソナル コンピューターはより小型のメインフレーム、インターネットは接続されたコンピューターのネットワーク、スマートフォンはインターネットに接続されたさらに小型のコンピューター、クラウド コンピューティングはコンピューティング リソースへのアクセスを民主化、モノのインターネットはクラウドに接続された他の物理的なものの一部として再構築されたスマートフォンのコンポーネントです。
しかし、過去 20 年間で、コンピューティングの進歩は物理的な世界だけでなく、デジタルの世界でも起こり、私たちのハイブリッドな現実を反映しています。
コンピューティングの新しい波が来るたびに、人間のデジタル排気、マシンデータ、ビジネスデータ、合成データといったハイブリッドな現実に関する新しい情報源が得られます。将来の波はさらに多くのデータを生み出すでしょう。このすべてのデータが新しい波の原動力となり、その最新の波がジェネレーティブ AI であり、それが私たちの現実をさらに形作ります。
コンピューティングの波はサイロ化されておらず、ドミノ倒しのように連鎖的に広がっています。最初は少しずつ流れてきたデータが、やがて大量のデータに変わりました。そして、大量のデータによって、さらに多くのデータベースが作成されるようになりました。
これらすべての新しいデータソースには、それらを保存するための新しい場所、つまりデータベースが必要です。
メインフレームは
インターネットの共同作業の力により、最初のオープンソース データベースを含むオープンソース ソフトウェアの台頭が可能になりました。
インターネットは膨大な量のデータも生み出し、それが最初の非リレーショナル、つまり NoSQL データベースの誕生につながりました。
2010 年頃、私たちは限界に達し始めました。その時点まで、ソフトウェア アプリケーションは主に単一のデータベース (Oracle、MySQL、PostgreSQL など) に依存しており、選択は比較的簡単でした。
しかし、「ビッグデータ」はどんどん大きくなりました。モノのインターネットによって機械データが増加し、iPhone と Android のおかげでスマートフォンの使用が飛躍的に増加し、人間のデジタル排出がさらに増加しました。クラウド コンピューティングによってコンピューティングとストレージへのアクセスが民主化され、これらの傾向がさらに強まりました。ごく最近では、生成 AI によってベクター データが作成され、この問題がさらに悪化しました。
収集されるデータの量が増えるにつれて、専門的なデータベースが登場しました。
20年前は、実行可能なデータベースの選択肢は5つくらいだった。今日では、
この膨大な量と、さまざまなトレードオフを伴う特殊なデータベースに直面して、開発者は複雑なアーキテクチャを組み立てるしか選択肢がありませんでした。
これらのアーキテクチャには通常、リレーショナル データベース (信頼性のため)、非リレーショナル データベース (スケーラビリティのため)、データ ウェアハウス (データ分析のため)、オブジェクト ストア (安価なアーカイブのため)、さらにそれらのユース ケース向けの時系列データベースやベクトル データベースなどのより特殊なコンポーネントが含まれます。
しかし、複雑さが増すと、構築にかかる時間が短くなります。複雑なアーキテクチャは脆弱になり、より複雑なアプリケーション ロジックが必要になり、開発時間が短くなり、開発が遅くなります。
つまり、ソフトウェア開発者は、未来を構築する代わりに、配管のメンテナンスにあまりにも多くの時間を費やしていることになります。これが今日の状況です。
もっと良い方法があります。
ここで、私たちの物語はひねりを加えます。私たちのヒーローは、ピカピカの新しいデータベースではなく、コア開発者の母体だけが気に入る名前を持つ、古くからある定番のデータベース、PostgreSQL です。
当初、PostgreSQL は MySQL に大きく後れを取って 2 位でした。MySQL は使いやすく、背後に企業があり、誰でも簡単に発音できる名前でした。しかし、その後、MySQL は Sun Microsystems (2008 年) に買収され、さらに Oracle (2009 年) に買収されました。そして、MySQL を高価な Oracle 独裁からの無料の救世主とみなしたソフトウェア開発者は、何を使用するかを再検討し始めました。
同じ頃、少数の小規模な独立系企業が後援する分散型開発者コミュニティが、PostgreSQL を徐々に改良していきました。彼らは、フルテキスト検索 (2008 年)、ウィンドウ関数 (2009 年)、JSON サポート (2012 年) などの強力な機能をひっそりと追加しました。また、ストリーミング レプリケーション、ホット スタンバイ、インプレース アップグレード (2010 年)、論理レプリケーション (2017 年) などの機能を通じて、また、バグを丹念に修正して粗い部分を滑らかにすることで、データベースの堅牢性を高めました。
この時期に PostgreSQL に追加された最も影響力のある機能の 1 つは、拡張機能 (PostgreSQL に機能を追加するソフトウェア モジュール) をサポートする機能でした (2011)。
拡張機能のおかげで、PostgreSQL は単なる優れたリレーショナル データベース以上のものになり始めました。PostGIS のおかげで優れた地理空間データベースになり、TimescaleDB のおかげで優れた時系列データベースになり、キー値ストアの hstore、グラフ データベースの AGE、ベクター データベースの pgvector になりました。PostgreSQL はプラットフォームになりました。
現在、開発者は、信頼性、スケーラビリティ(非リレーショナル データベースの置き換え)、データ分析(データ ウェアハウスの置き換え)などの目的で PostgreSQL を使用できます。
この時点で、賢明な読者は「ビッグ データはどうですか?」と尋ねるはずです。これはもっともな質問です。歴史的に、「ビッグ データ」(数百テラバイト、さらにはペタバイト) とそれに関連する分析クエリは、単独では水平方向に拡張できない PostgreSQL などのデータベースには適していませんでした。
それも変わりつつあります。昨年11月に私たちは「
したがって、「ビッグデータ」は歴史的に PostgreSQL の弱点領域でしたが、近い将来、どんなワークロードでも大きすぎることはなくなるでしょう。
PostgreSQL が答えです。PostgreSQL は、私たちが自分自身を解放し、未来を築く方法です。
それぞれ独自の癖やクエリ言語を持つ複数の異なるデータベース システムをいじくり回す代わりに、世界で最も汎用性が高く、おそらく最も信頼性の高いデータベースである PostgreSQL に頼ることができます。配管に費やす時間を減らし、未来の構築に多くの時間を費やすことができます。
PostgreSQL は進化し続けています。PostgreSQL コミュニティはコア部分の改良に取り組んでいます。ハイパースケーラーを含め、現在ではさらに多くの企業が PostgreSQL に貢献しています。
今日のPostgreSQLエコシステム(
PostgreSQL エクスペリエンスを向上させるためにコアを中心に構築している、より革新的で独立した企業も存在します。
そしてもちろん私たちも
Timescale の話は、おそらく少し聞き覚えがあるでしょう。私たちは IoT 顧客のためにいくつかの難しいセンサー データの問題を解決していましたが、データが溢れかえっていました。対応するために、少なくとも 2 つの異なるデータベース システム (そのうちの 1 つは時系列データベース) を含む複雑なスタックを構築しました。
ある日、私たちは限界に達しました。UI で、デバイスを device_type と uptime の両方でフィルタリングしたいと考えていました。これは単純な SQL 結合であるはずでした。しかし、2 つの異なるデータベースを使用していたため、代わりにアプリケーションで 2 つのデータベース間のグルー コードを記述する必要がありました。変更を行うには数週間かかり、エンジニアリング スプリント全体がかかりました。
その後、エンジニアの一人が突飛なアイデアを思いつきました。PostgreSQL で時系列データベースを構築したらどうだろう、と。そうすれば、すべてのデータを 1 つのデータベースで管理でき、ソフトウェアをより早くリリースできるようになります。その後、それを構築したところ、私たちの生活はずっと楽になりました。その後、友人にそのことを話すと、彼らも試してみたいと言ってくれました。そして、これは世界と共有する必要があると気づきました。
そこで、私たちは時系列拡張機能TimescaleDBをオープンソース化し、
それから 7 年、私たちは拡張機能と PostgreSQL クラウド サービスの両方に多大な投資を行い、時系列と分析のための PostgreSQL 開発者エクスペリエンスをますます向上させてきました。ハイパーテーブル (自動パーティション テーブル) によるクエリの 350 倍高速化、挿入の 44% 増加、継続的な集計 (リアルタイム マテリアライズド ビュー) による一般的なクエリの応答時間のミリ秒化、ネイティブの列指向圧縮による 90% 以上のストレージ コスト削減、階層型ストレージによる無制限で低コストのオブジェクト ストレージなどです。
それが、時系列データにおける私たちの始まりであり、私たちが最もよく知られているものでもあります。
しかし、昨年私たちは拡大を始めました。
私たちは立ち上げました
最近、
PopSQLはチームコラボレーションのためのSQLエディタです
また、「
現在、Timescale はあらゆる規模で強力な PostgreSQL です。当社は現在、時系列だけでなく、AI、エネルギー、ゲーム、マシン データ、電気自動車、宇宙、金融、ビデオ、オーディオ、Web3 など、他社が解決できない難しいデータ問題を解決しています。
私たちは、開発者はあらゆる用途に PostgreSQL を使用するべきだと信じており、それが実現できるように PostgreSQL を改良しています。
お客様は、時系列データだけでなく、ベクター データや一般的なリレーショナル データにも Timescale を使用しています。Timescale を使用することで、PostgreSQL をあらゆる用途に使用できます。あなたも次のことができます。
私たち人間の現実は、物理的、仮想的、オフライン、オンラインを問わず、データで満ち溢れています。ヨーダが言うように、データは私たちを取り囲み、私たちを縛り付けています。この現実は、ソフトウェア開発者、つまり私たちによって書かれたソフトウェアによってますます支配されるようになっています。
これは驚くべきことだと認めざるを得ません。それほど昔のことではありませんが、2002年、私がMITの大学院生だった頃、世界はソフトウェアへの信頼を失っていました。私たちはドットコムバブルの崩壊から立ち直りつつありました。主要なビジネス出版物は次のように宣言しました。「
しかし今日、特にこの生成型 AI の世界では、未来を形作っているのは私たちです。私たちは未来の構築者です。私たちは自分自身をつねってみるべきです。
あらゆるものがコンピューター化されつつあります。これは概ね良いことです。車はより安全になり、家はより快適になり、工場や農場の生産性は向上しました。私たちはかつてないほど多くの情報に瞬時にアクセスできるようになりました。私たちは互いによりつながり合っています。時には、それが私たちをより健康にし、より幸せにしてきました。
しかし、常にそうとは限りません。フォースと同様に、コンピューティングには明るい面と暗い面があります。携帯電話とソーシャルメディアが直接的に影響しているという証拠が増えています。
私たちは、未来の構築に影響を与える 2 つの貴重な資源、つまり時間とエネルギーの管理者になりました。
私たちは、それらのリソースを配管の管理に費やすか、PostgreSQL for Everything を採用して正しい未来を築くかを選択できます。
私たちの立場はご存じだと思います。
読んでくれてありがとう。#Postgres4Life
(
この投稿はAjay Kulkarniによって書かれました。