第 3 世代の分散データベース (1) - フットボールの時代

2023 年 8 月、DTCC は「第 3 世代分散データベース」というタイトルのコンテンツを共有しました。図 1 に示すように、これには 3 つの側面が含まれています。

  1. 1. 分散データベースの開発史を中心としたデータベース技術の発展史をまとめたもの。

  2. 2. まとめから「イノベーション」というテーマを考え、イノベーションの源泉はどこから来るのかを考えてみましょう。

  3. 3. 第 3 世代分散データベースの 3 つの重要な機能と起源を共有しました。

写真

図1 「第3世代分散データベース」の内容概要

データベースの歴史が教えてくれる事

このデータベースは 70 年にわたって開発され、豊富で多彩なテクノロジーと関連イベントが含まれています。図 2 に示すように、いくつかの主要なイベントが特定され、さまざまなデータベース データ テクノロジの出現、開発、繁栄につながりました。

この 70 年間、分散データベースはデータベース技術とともに発展してきました。歴史を要約すると、分散データベースは 2 つの段階を経たことがわかります。

  1. 1.      2段階の分散データベース

第一世代の分散データベースの段階は研究時代と呼ばれ、この時代はデータベースと分散データベースの概念とプロトタイプの実装段階です (1960 年代から 1990 年代後半まで)。分散データベース システムに関する体系的な研究と探索を実施しました (分散データベースは、多数のスタンドアロン データベース システムの研究結果に基づいています)。この段階の分散データベースは、疎結合方式で同種または異種の単一マシン データベースに基づいており、送信操作の原子性を確保するために分散クエリ最適化と分散トランザクションの 2PC (クロスマシン分散トランザクション) が生まれます。他のテクノロジー。その中で、2PC テクノロジーは、ノード間のトランザクション送信のアトミック性とデータの一貫性の問題を場合によっては解決します (すべてのデータの一貫性の問題ではなく、一部のみです)。

第 1 世代の分散データベースは研究に焦点を当てており、まだ大規模な実用段階には完全には入っていません。現段階では、データの正確性(世界中にどれだけのデータ異常があるかわからないなど)、スケーラビリティ、可用性、トランザクションの一貫性などの重要な問題はまだ解決されていません。その中でも 2PC 技術は最も古典的であり、分散トランザクション技術の代名詞となっており、21 世紀の現在、分散トランザクションについて語るとき、ほとんどの人は 2PC についてしか知らず、他の重要な技術については知りません。テクノロジー。   

第2世代分散データベースの段階は大規模データ時代と呼ばれ、この時代が実用段階(1990年代から2020年代初頭)となり、分散データベースは本格的に実用段階に入りました。ますます増大するアプリケーションの需要に後押しされ、分散データベースは理論から実用段階に入りました。この段階は理論とユーザーのニーズの両方によって推進され、分散データベースが実際の生産プロセスに入ります。代表的な 3 つの象徴的なテクノロジー/イベントがあります。 、分散データベース システムが成熟していることを示すマーク:

まず、 1990 年代初頭のPaxos プロトコルの出現により、スタンドアロン時代のマスター/スレーブ レプリケーション テクノロジがデータの複数コピーの一貫性の理論的保証を獲得できるようになり、データベース システムの高可用性の問題が基本的に解決されました。データベース システムが物理ノード レベル全体でクロスリージョン/耐災害性を備えられるようにします。

第二に、 1990 年代後半のCAP 理論の出現により、分散システムの一貫性と可用性の関係/境界が明確になり (ただし、特に明確ではありません)、理論レベルおよび実用レベルでの分散データベース システムのさらなる拡張が促進されました。実装することができます。

第三に、2012 年に Google のSpanner システムが発売されました。これにより、エンジニアリングの実践における前述の Paxos 理論と CAP 理論の実現可能性が示され、分散トランザクションの最も強力な一貫性 (厳密な直列化可能性) が達成できるようになりました。

これら 3 つの代表的な技術・出来事をきっかけに、分散トランザクションデータベースシステムは実用化段階に入り、数多くの分散データベースシステムが誕生しました。

この段階の製品は大規模実用化の段階に入り始めています。欠点は、データの精度が 100% 解決できないこと (シリアル化可能な分離レベル以下のコンピューティング水平拡張機能はすでに利用可能である)、トランザクション レベルで究極の水平拡張弾力性を実現できないこと、および非常に高いレベルの拡張を実現できないことです。パフォーマンスの観点からは、100% のデータ精度を同時に達成する必要があるため、データの精度とデータベースの高性能の問題はまだ解決されていません。

写真

図 2 分散データベースの最初の 2 段階におけるデータベース開発の歴史と画期的な出来事

  1. 2. 私たちの質問と考察

現在、第 2 世代の分散データベースはますます成熟し、多くのアプリケーションが提供されていますが、次世代のデータベース製品はどのようなものになるのでしょうか?

次世代データベースの核となる機能を明確に議論するために、私たちは「データベースの基礎は何なのか?」について深く考えました。データベースの最も深いところからデータベース テクノロジーを最も強力に前進させているものは何でしょうか?

私は第一世代と第二世代のデータベース製品を長年使用しており、既存の知識体系に長年啓発され魅了され、現実の環境に長い間囲まれてきました。無力感が多すぎるので、もうそれはありません。おそらくこれが私たちが混乱した理由でしょうか?

霧の中で、初心を忘れないことによってのみ、私たちは常に成功することができます。トランザクション データベースの初心と本質を見直すことができます。そして、70 年の長い開発の歴史にもかかわらず、データベースが完全に解決されていないことがわかります。その核心的な問題!

「3 つの高さと 1 つの容易さ」(高信頼性、高可用性、高パフォーマンス、使いやすさ) がデータベースの核となる特性です。しかし、開発の歴史を振り返ってみると、正確性と使いやすさというデータベースの基本的な問題がまだ完全に解決されていないことに気づきます。基本的な問題を解決することが、データベース開発の中核となる原動力です図 3 に示すように。

写真

図 3 データベースはデータベースの核となる責任を果たせません。

最初の質問は、データの正確さです。トランザクション処理テクノロジが重要である主な理由は、2 つの点を保証することです。それは、同時操作の動作下で、データの正しいパフォーマンスが保証され、高い同時実行パフォーマンスが得られることです。

しかし、データの正確性とデータベースの高パフォーマンスはデータベース レベルで完全に解決されているのでしょうか? 答えはいいえだ!

トランザクション処理テクノロジの観点から見ると、分散データベースの最初の 2 つの時代を合わせて、「ユーザーへのキックボール」の時代と呼ぶことができます。データベース (理論、カーネル) は、「複雑さを放っておいてユーザーに単純さを提供する」ものではありませんでした。データベース製品は半完成品です。

なぜそんなことを言うのですか?————

(1)不明なデータ異常はどれくらいありますか? ANSI-SQL では 4 種類しか列挙できませんが、実際には 12 種類以上が文献で報告されています (参考文献 [1] では 30 以上の種が報告されています。参考文献 [1] を詳しく読むことをお勧めします。観点、用語、および一部の内容)はこの記事から派生したものです)。データの異常は、データの正確性に影響を与える中核的な問題です。

(2) データベースの整合性には多くの定義があり、それぞれの定義は異なり、108,000 マイルの違いがあります。たとえば、理論レベルでは一貫性を表現するために整合性制約が使用されますが、実際のレベルでは、同時スケジューリングが正しいことを保証するために直列化可能性理論が使用されますが、残念ながらそれを完全に保証することはできません。データベース エンジンの実装では、データ異常がないことを保証するために競合シリアル化可能性が使用されます (ただし、データ異常がないことをどのようにして保証できるのかは完全には明らかではありません) が、教科書にはその理由が明確に説明されていません。終わり?セマンティック一貫性と有向グラフに基づくシリアル化可能なスケジューリングの間にはどのような関係がありますか?

(3) 分散環境では、CAP の C と ACID の C が一緒になったときに何が起こるかが不明確であり、実装された分散データベースには根本的な欠陥があります (読者が自分で読み取れる、第 2 世代分散データベースの中でも)データベース製品について、どのメーカーがこの問題に関して自社製品の処理技術について明確に説明するでしょうか?)。

(4) CAP は、P が発生したときの A と C の関係を記述しますが、遅延に敏感なトランザクションの遅延まで精密化することはできません。PACELC (Abadi が提案、意味: パーティション イベント (P) が発生した場合、可用性 (A) と一貫性 (C) のどちらを選択するか? それ以外の場合 (Else)、つまりパーティション イベントが発生しない場合、どのように選択するかレイテンシー (L) ) と一貫性 (C) の間?)。言い換えれば、コンセンサス プロトコルはシステム レベルの高可用性を解決し、クロスリージョンの災害復旧を実現できますが、トランザクション レベルの高可用性の問題をどのように解決するのでしょうか? トランザクション レベルの高可用性は、ユーザーにとって非常に役立ちます。例: HTAP システムでは、3 昼夜後に結果が生成されようとしていたレポート クエリの実行の最後の 10 秒以内にネットワーク パーティション イベントが発生しました。トランザクションをロールバックしてやり直しますか?

2 番目の質問、データベースのパフォーマンス (およびデータの正確性) :

データベースの輪の中には「習慣が自然になる」という奇妙な輪がいくつかあり、それによって私たちの認知は知らず知らずのうちに間違った輪に留まり、自分が守っていることが正しいとさえ感じてしまうことがあります。

たとえば、「データベースの分離レベルを RC に設定すれば十分だ」とよく言われます。しかし、なぜそれで十分なのでしょうか?RC レベルでのデータベースのパフォーマンスが良好であると感じているためです。

ただし、図 4 の左上部分に示すように、無限ループが存在します。ユーザーはデータベースの高いパフォーマンス (低コスト) を望んでおり、開発者はアプリケーションの分離レベルを RC に設定しますが、ユーザー、特に金融、保険、証券、電気通信、その他のユーザーもデータの正確性を保証する必要があるため、開発者はデータの正確性を保証するために SQL ステートメントに「Select...For Update」を追加する必要があります。ただし、これにより深刻なパフォーマンスの低下が発生します。 TPC-C および YCSB シナリオの図 4 に示すように、データベース システムのパフォーマンスが低下するテスト結果は、ユーザーのアクティブなロック方法がデータベース システムのパフォーマンスに重大な低下を引き起こすことを示しています。

Oracle などのシステムを長年使用していると、多くの人が Oracle 流の考え方に慣れ、Oracle 流の罠に陥ってしまいますが、これはデータベースの本来の目的や起源から大きく逸脱しています。

それでは、データベース システムが 100% のデータ精度を保証するだけでなく、最高のパフォーマンスも実現できると正直に期待できますか?

この日が来れば、開発者にとっては開発が容易になり(アプリケーションのシナリオがデータの不整合を引き起こすかどうかを分析する必要がなくなり、ロック後のプログラミングのデッドロックを心配する必要がなくなり)、アプリケーション所有者も負担なくアプリケーションを推進できるようになるでしょうか(データ内のエラーを心配して、金融取引が正確であることをデータベースに完全に保証させますか?

写真

図 4 ユーザーがアプリケーションを積極的にロックインし、データベースのパフォーマンスが大幅に低下する

3 番目の問題は、データベースの使いやすさです。ユーザーの期待は現実とまったく異なります。

データベースの使いやすさは、現実的な大きな問題です。ユーザーはソフトウェアを使用するとき、それが非常に使いやすく、さらには誰でも簡単に操作できることを期待します。しかし、データベースは確実性という基本的なニーズを満たすことができるでしょうか? できません!

図 3 の右側に示すように、データベースの使いやすさは非常に悪く、さまざまな側面に反映されています。

1. データベースは専門の DBA 管理 + 運用保守が必要であり、コストが高いため普及が進まない。

2. データベースには、データベース テーブル構造の専門的な設計が必要です (ER モデルとパラダイム定義に精通している必要があります)。

3. 開発者は、深い専門知識が必要であり、分離レベルの設定方法を知る必要があり、どのような状況でデータの不整合が発生するかを知る必要があり、いつアクティブにロックするかを知る必要があり、SQL ステートメントの記述方法を知る必要があり、複雑な SQL 更新を作成します。効率的ですが、さまざまなパラメーターを構成する方法を知る必要があります...;

4. 面接官はデータベース関連の幅広く深い知識を必要とします...古典的な教科書で明確に説明されていない知識を学ぶことはさらに困難です。

読者は、実際にはこれ以上のものであると深く感じるでしょう。データベースの使いやすさは悪く、例はほぼ無限にありますよね。

概要:私たちは、分散データベース システムの第 2 世代が形になったと信じています。最初の 2 世代の開発には困難が伴いましたが、開発の初期段階では無知の状態にありました。データベース テクノロジは常に研究されています。しかし、それらはいずれも合理的な事前設計 (事前定義された機能、対象を絞った研究開発) を欠いています。

今度は、ユーザーにボールをデータベース開発者に戻すよう求める時が来ました(ニーズと期待、期待と目標の両方の時代が来ています)。

データベース テクノロジの 70 年以上の開発の中で、より多くの経験を蓄積するにつれて、第 3 世代の分散データベースの中核となる要件と特性を予測どおりに予測し、これを次世代の製品開発のガイドとして使用できるようになります。 . 前に進みます。

予測の失敗は失敗につながります 第3世代分散型データベースの研究開発は「予測してから研究開発を進める」という研究開発モデルに基づきます 無知と闇の探索の時代は永遠に終わります!

つづく:

次の記事では、次のことについて説明します。

  1. 1. イノベーションの源泉、事前計画に基づくデータベース製品開発の思考モデル!

  2. 2. 第 3 世代分散データベースとは何ですか? 第3世代分散データベースの特徴をご存知ですか?

参照:

[1] Li Haixiang、Li Xiaoyan、Liu Chang、Du Xiaoyong、Lu Wei、Pan Anqun、データベース管理システムにおけるデータ異常の体系的な定義と分類、Journal of Software、2022、33(3): 0

おすすめ

転載: blog.csdn.net/fly2nn/article/details/132725765