2 ポイント 投稿者 GN⁺ 2024-01-11 | 1件のコメント | WhatsAppで共有

データベースの問題点と、その複雑さが不要である理由

  • データベースはグローバルな可変状態であり、コードを複雑にし、理解を難しくする。
  • データモデルには制約があり、すべてのユースケースをサポートできないため、複数のデータベースを使う必要が生じる。
  • 正規化と非正規化の問題は、データ整合性と性能のあいだに緊張関係を生み出す。
  • 制限の多いスキーマは、ドメイン表現をデータベースに合わせるための複雑さを招く。
  • 複雑なデプロイは、さまざまなツールの組み合わせと統合によって、コストと複雑さを増大させる。

アプリケーションバックエンド構築のための一貫したモデル

  • バックエンドの基本機能は、新しいデータを受け取り、そのデータに関する問いに答えること。
  • 理想的なバックエンド設計は、現実の制約を満たしつつ、可能な限り理想に近づくべきである。

Rama

  • Ramaはバックエンド開発プラットフォームであり、Mastodonを再実装してTwitter規模のサービスを提供する。
  • Ramaは、データ、インデックス、ETL、クエリなど、バックエンドのあらゆる要素を汎用的な方法で実装する。
  • Ramaは複雑なデプロイを簡素化し、モニタリングを統合することで、開発および保守コストを大幅に削減する。

GN⁺の見解

  • データベースのグローバル可変状態という問題は、コードの複雑さとエラーの可能性を高め、これは開発者がしばしば直面する問題である。
  • Ramaは既存データベースの限界を克服し、バックエンド開発の複雑さを減らす新しいアプローチを提示する。
  • この記事は、データベースとバックエンドシステムの複雑さを減らしたい開発者にとって、興味深く有益な情報を提供する。

1件のコメント

 
GN⁺ 2024-01-11
Hacker Newsの意見
  • 真実のソースを表す1つのサブシステムと、そのソースから派生した複数のインデックスストアを実装する別のサブシステムを使うべきだ。これはイベントソーシングとマテリアライズドビューの組み合わせだ。

    • イベントソーシングとマテリアライズドビュー: 真実のソースを表すシステムと、それに基づくインデックスストアを分離して管理することが解決策である。
  • 私たちは読み取りモデルと書き込みモデルを分離する。書き込みモデル("真実のソース")は伝統的なリレーショナルなドメインモデルで構成され、ほぼすべてのコマンドは共有ドメインイベントキューに公開されるイベントを生成する。読み取りモデルは、イベントを消費してビューを構築するワーカー群で構成される。

    • 読み取り/書き込みモデルの分離: 書き込みモデルはリレーショナルなドメインモデルで構成され、コマンドはイベントを生成してドメインイベントキューに公開される。読み取りモデルはイベントを消費してビューを構築する。
  • データ変更時のマテリアライズは、製品が1つの処理を非常に高速に実行しなければならないときには利益をもたらしうる。しかし、複雑なトランザクションが必要だったり、異なる形に整理されたデータが必要な新機能を追加しようとすると問題が発生する。

    • データのマテリアライズの限界: 単一の処理に最適化されている場合には有用だが、複雑なトランザクションや新しいデータ構造が必要な機能追加時には問題が生じうる。
  • これが「Twitter規模のMastodonクライアント」で証明されたと主張するのは、実際に1日4000万人が利用するWebサイトを運営していない限り不可能だ。

    • 規模の重要性: 実際の大規模ユーザー環境をシミュレートするのは不可能であり、それを証明したと主張するのは難しい。
  • より良いアプローチは、イベントソーシングとマテリアライズドビューの組み合わせだ。

    • イベントソーシングとマテリアライズドビューの組み合わせ: 複雑さの増加を伴うが、より良いアプローチとして提示されている。
  • 単一のデータモデルがすべてのユースケースを支えられるわけではない。

    • データモデルの多様性: 単一のデータモデルですべてのユースケースを支援することは不可能である。
  • データベースへの不満はない。

    • データベースの妥当性: データベースに対する不満はなく、依然として有効なツールである。
  • 並行性、分離、制約条件などの概念が欠けているのではないか? 「クエリトポロジー」は本当に開発者環境において優れているのか?

    • クエリトポロジーへの疑問: 並行性、分離、制約条件などの重要な概念が欠けており、クエリトポロジーが開発者環境において優れているという主張に疑問を投げかけている。
  • RamaについてのELI5(やさしく説明してほしい)が必要だ。ドキュメントは混乱しているし、「パラダイムシフト」や「プラットフォーム」のようなバズワードは使わないでほしい。

    • Ramaの簡単な説明の要望: Ramaについてのわかりやすい説明と、バズワードを避けた明確な解説が求められている。
  • イベントソーシング(+ マテリアライズドビューとインデックス)はRDBMSを捨てることではない。両方を一緒に使える。

    • イベントソーシングとRDBMSの共存: イベントソーシングとマテリアライズドビューはRDBMSと併用でき、両者は相互排他的ではない。

背景知識:

  • イベントソーシング(Event Sourcing): システムの状態変化をイベントとして記録し、それを再生することでシステムの状態を再構築できる設計パターン。
  • マテリアライズドビュー(Materialized Views): データベースのクエリ結果を物理的に保存し、データ読み取り性能を向上させる技術。
  • RDBMS(Relational Database Management System): リレーショナルデータベースを管理するシステム。