1735758232
2024-12-10 11:27:00
私は長い間サービスとしてのデータベースを実行してきましたが、大学から発表されるすべての研究は言うまでもなく、新しいテクノロジ、問題を解決するさまざまな方法など、常に新しい情報を把握しておく必要があります。 2025 年に、これらのデータベース テクノロジのそれぞれに 1 週間費やすことを検討してください。
前文
これらは、Buzzfeed のリスト記事を強化するための「ベスト データベース 7 つ」やそれに似たものではありません。これらは、1 週間ほど時間をかけて実際に調べる価値があると私が考える 7 つのデータベースです。 「なぜ Neo4j や MongoDB や MySQL/Vites などを使わないのですか?」というような疑問を抱くかもしれませんが、答えのほとんどは、それらが興味深いとは思えないということです。また、Kafka や他の同様のストリーミング データ サービスについても取り上げていません。時間をかける価値は間違いなくありますが、取り上げられていません。
この投稿は元の本に触発されて作成されました 7 週間で 7 つのデータベース リュック・パーキンス著、エリック・レドモンド、ジム・ウィルソン著。
目次
1.ポストグレSQL
デフォルトのデータベース
「Postgres を使えばいい」というのは現時点では基本的にミームですが、それには十分な理由があります。 PostgreSQL の頂点です 退屈な技術、データベースにクライアント サーバー モデルが必要な場合に使用するデータベースになります。 ACID に準拠しており、物理的および論理的なレプリケーションに関する興味深いトリックが多数あり、すべての主要ベンダーで非常によくサポートされています。
ただし、Postgres の私のお気に入りの機能は次のとおりです。 拡張子。これは、他のほとんどのデータベースでは実現できない方法で、Postgres が本当に生きていると私が感じるところです。必要なほぼすべてのものに対応する拡張機能があります – 年 グラフ データ構造と Cypher クエリ言語のユーザーを有効にします。 タイムスケールDB 時系列ワークロードを可能にし、 ヒドラ柱状 代替のカラム型ストレージ エンジンなどを提供します。私は 拡張機能の作成について書かれています 比較的最近、自分で試してみたい場合は。
そのため、Postgres は優れた「デフォルト」データベースとして優れており、Postgres 以外のサービスがさらに多くのサービスに依存していることがわかります。 Postgres ワイヤープロトコル クライアント互換性を提供する汎用レイヤ 7 プロトコルとして。豊かなエコシステム、賢明なデフォルト動作、そしてそれが Wasmのインストール 理解する価値のあるデータベースになります。
1 週間かけて、Postgres で何ができるか、そしてその制限についても学びましょう – MVCC 気まぐれになる可能性があります。好みの言語でシンプルな CRUD アプリを実装します。もしかしたら、Postgres 拡張機能を構築することもできるかもしれません。
2.SQLite
ローカルファーストのデータベース
クライアント/サーバー モデルから離れて、「組み込み」データベースに寄り道します。 SQLite。私はこれを「」と名付けました地元第一主義」データベースでは、SQLite データベースがアプリケーションと直接同じ場所に配置されます。この使用法の最も有名な例の 1 つは次のとおりです。 ワッツアップ、使用されているデバイス上のローカル SQLite データベースとしてチャットを保存します。 信号 も同じことをします。
さらに、ローカルの ACID 準拠データベース「だけ」ではなく、SQLite のより創造的な使用法が見られ始めています。のようなツールの登場により、 ライトストリーム ストリーミングバックアップを有効にし、 LiteFS 分散アクセスを提供するには、より興味深いトポロジを考案できます。のような拡張子 CR-SQLite の使用を許可する CRDT で使用されるように、変更セットをマージするときに競合解決が必要になるのを避けるため。 腐食。
SQLite も、次のおかげで少し復活しました。 Ruby on Rails 8.0 – 37signals は SQLite に全面的に取り組んでおり、次のような一連の Rails モジュールを構築しています。 ソリッドキュー そして複数の SQLite データベースを操作するように Rails を設定します。 database.yml この目的のために。 Bluesky はパーソナル データ サーバーに SQLite を使用しています – すべてのユーザーは独自の SQLite データベースを持っています。
1 週間かけて、SQLite を使用してローカル ファースト アーキテクチャを試してみたり、Postgres を使用したクライアント/サーバー モデルを SQLite を「単に」必要とするものに移行できるかどうかを確認したりできます。
3.ダックDB
何でもクエリできるデータベース
次の組み込みデータベースでは、 アヒルDB。 SQLite と同様に、DuckDB はインプロセス データベース システムであることを目的としていますが、オンライン トランザクション処理 (OLTP) ではなくオンライン分析処理 (OLAP) に重点を置いています。
DuckDB が優れているのは、SQL を言語選択として使用し、「何でもクエリできる」データベースとして使用できることです。 CSV、TSV、JSON などからネイティブにデータをエンジンに取り込むことができますが、Parquet などの形式も取り込むことができます – のリストを確認してください。 データソース。これにより、非常に高い柔軟性が得られます – チェックアウトしてください Bluesky Firehose へのクエリの例。
Postgres と同様に、DuckDB も 拡張子ありそれほど豊かなエコシステムではありませんが、結局のところ、DuckDB ははるかに若いのです。コミュニティによって提供されたものの多くは、 コミュニティ拡張機能のリストですが、私の特にお気に入りは gsheets。
Python ノートブックなどを使用して、DuckDB を使用してデータ分析と処理を行うのに 1 週間を費やします。 証拠SQLite データベースの分析クエリを DuckDB にオフロードすることで、SQLite の「ローカル ファースト」アプローチにどのように適合するかがわかるかもしれません。 読むことができます。
4.クリックハウス
列指向データベース
組み込みデータベースの領域から離れて、分析のテーマに固執すると、次のことがわかります。 クリックハウス。扱うデータベースを 2 つだけ選択する必要がある場合、Postgres と ClickHouse だけで十分満足します。前者は OLTP 用、後者は OLAP 用です。
ClickHouse は分析ワークロードに特化しており、非常に高い取り込み率をサポートできます。 水平スケーリング そして共有ストレージ。もサポートします 階層型ストレージ、「ホット」データと「コールド」データを分割できる – GitLab これについてはかなり詳細なドキュメントがあります。
ClickHouse が真価を発揮するのは、DuckDB などには大きすぎるデータセットで実行する分析クエリがある場合、または「リアルタイム」分析が必要な場合です。これらのデータセットに関しては多くの「ベンチマーケティング」があるため、ここでは繰り返しません。
ClickHouse をチェックすることをお勧めするもう 1 つの理由は、それが 喜び 操作 – デプロイメント、スケーリング、バックアップなどが必要です。 よく文書化されている – 設定に至るまで 適切な CPU ガバナー カバーされています。
1 週間かけて、いくつかの大規模な分析データセットを調査したり、上記の DuckDB 分析の一部を ClickHouse デプロイメントに変換したりしてください。 ClickHouse には埋め込みバージョンもあります – chDB – これにより、より直接的な比較が可能になります。
5.財団データベース
階層化されたデータベース
ここで、このリストの「心を拡張する」セクションに入ります。 財団DB。おそらく、FoundationDB はデータベースではありませんが、文字通り、 ある データベース。 Apple、Snowflake、および チグリスのデータFoundationDB は、キーと値のストレージの世界では非常にユニークなため、時間をかけて取り組む価値があります。
はい、これは順序付けされた Key-Value ストアですが、興味深いのはそこではありません。一見すると、いくつかの興味深い点があります 制限事項 – トランザクションは、影響を受けるデータが 10MB を超えることはできず、トランザクションの最初の読み取り後に 5 秒以上かかることはできません。しかし、よく言われるように、制限は私たちを自由にします。これらの制限を設けることで、非常に大規模な完全な ACID トランザクションを実現できます。100 以上の TiB クラスターが動作していることがわかっています。
FoundationDB は特定のワークロード向けに設計されており、 徹底的にテストされた シミュレーション テストを使用します。これは、このリストにある別のデータベースなど、他のテクノロジによって取り上げられています。 アンチテーゼ、FoundationDB の元関係者によって設立されました。これに関する詳細な注意事項については、こちらをご覧ください タイラー・ニーリーの そして フィル・イートンの トピックに関するメモ。
前述したように、FoundationDB には非常に特殊なセマンティクスがあり、慣れるのに時間がかかります。 アンチ機能 そして 特徴 解決しようとしている問題を理解するために、ドキュメントに精通する価値があります。
しかし、なぜ「階層型」データベースなのでしょうか?これは、 レイヤーの概念。ストレージ エンジンをデータ モデルに結び付けるのではなく、ストレージはさまざまなレイヤー間で再マップできるほど柔軟です。 チグリスのデータ このようなレイヤーの構築に関する素晴らしい投稿があり、次のような例がいくつかあります。 レコード層 そして ドキュメントレイヤー FoundationDB 組織から。
1 週間かけて、 チュートリアル そして、次のようなものの代わりに FoundationDB をどのように使用できるかを考えてください。 ロックスDB。たぶん、いくつかをチェックしてください デザインレシピ そして読みに行ってください 紙。
6.ハンミョウ
徹底的に正しいデータベース
決定論的シミュレーション テストからの流れとして、 タイガービートル これまでのデータベースの型を明らかに打ち破ったものです。 ない 汎用データベース – 完全に金融取引専用です。
なぜこれが一見の価値があるのでしょうか?単一目的のデータベースは珍しく、次のようなものです。 執拗に正しい TigerBeetle は、特にオープンソースであることを考慮すると、真の希少品です。それらには以下のすべてが含まれます NASA の Power of Ten ルール そして プロトコルに応じたリカバリ、カーネル ページ キャッシュの問題を回避するための厳密なシリアル化機能とダイレクト I/O まで。それは 真剣に 印象的です – ぜひ読んでみてください 安全性に関するドキュメント そして彼らの 彼らがタイガースタイルと呼ぶプログラミングへのアプローチ。
TigerBeetle に関するもう 1 つの興味深い点は、次のように書かれていることです。 ジグ – システム プログラミング言語スクールには比較的初心者ですが、TigerBeetle の人々が達成しようとしていることに明らかによく適合しています。
TigerBeetle のローカル展開で金融口座をモデリングするのに 1 週間を費やします。 クイックスタート そして見てください システムアーキテクチャ 上記の汎用データベースの 1 つと組み合わせて使用する方法に関するドキュメント。
7. ゴキブリDB
グローバルデータベース
ついに一周回ってきました。最後のスロットに何を入れるか少し悩みました。当初の考えは次のとおりでした トランシーバーしかし、FoundationDB はキーと値の煩わしさを解消しました。グラフデータベースか何かについて考えました スキュラDB または カサンドラ。考えました DynamoDB、しかし、ローカルで/無料で実行できないのでがっかりしました。
最終的に、私は世界的に分散されたデータベースを閉じることにしました – ゴキブリDB。これは Postgres ワイヤ プロトコルと互換性があり、上で説明したより興味深い機能のいくつか (大きな水平スケーリング、強力な一貫性) を継承しており、独自の興味深い機能もいくつか備えています。
CockroachDB は、Google のベースに基づいてデータベースを複数の地域にまたがって拡張できるようにします。 スパナ このシステムは、非常に正確な時刻同期を原子時計と GPS クロックに依存しています。ただし、汎用ハードウェアにはそのような贅沢はありません。そのため、CockroachDB にはいくつかの機能があります。 賢い解決策 ここで、NTP とのクロック同期遅延を考慮して読み取りが再試行または遅延され、ノードもノード間でクロック ドリフトを比較し、最大オフセットを超えた場合にはメンバーを終了します。
CockroachDB のもう 1 つの興味深い機能は、 マルチリージョン構成 を含めて使用されます テーブルの産地ここでは、必要な読み取り/書き込みのトレードオフに応じてさまざまなオプションがあります。
1 週間かけて再実装してください movr たとえば、選択した言語とフレームワークで作成できます。
まとめ
私たちは、地球上のいくつかの最大手企業によって実稼働環境で使用されているさまざまなデータベースを調査してきました。これにより、これまでよく知らなかったいくつかのテクノロジーについて触れていただければ幸いです。興味深い問題を解決するために、この知識を活用してください。
#年に向けて #週間で #つのデータベース