データベースは、何らかの組織的な方法で保存されたデータの集合です。本稿では、データベースの基本的な概念から、データベースの主なカテゴリと基本的な特徴を詳しく説明し、ラージモデル時代に注目を集めているデータベースの一種であるベクトルデータベースについて詳しく分析します。誰もがデータベース分野の基本概念を理解し始めることができます。
1. データベースとは何ですか?
まず、Wikipedia のデータベースの定義を見てみましょう。特定の方法で一緒に保存され、複数のユーザーが共有でき、冗長性が最小限に抑えられ、アプリケーションから独立したデータのコレクションです。データベースは複数のテーブルスペースで構成されます。
百度百科では、データベースを次のように定義しています: データベースとは、「データ構造に従ってデータを整理、保存、管理する倉庫」であり、コンピュータに長期間保存される大量のデータの集合です。組織化され、共有可能で統一された管理。
データベース (英語で DB) は、何らかの組織的な方法で保存されたデータの集合です。コンピュータのデータを保管する倉庫のようなもので、データを一定のデータ構造(つまり、データの組織形態やデータ間の関係)に従って整理・保管し、提供されているさまざまな方法で管理することができます。データベースによる、その中のデータ。
2. データベースの分類
組織がデータを保存するために使用するデータ モデルに従って、データはリレーショナル データベース (RDBMS と呼ばれるリレーショナル データベース管理システム) と非リレーショナル データベース (NoSQL) に分類できます。
リレーショナル データベース: データを表形式で保存し、操作言語として SQL (MySQL、Oracle、SQL Server など) を使用します。データを高度に整理、分類、フィルタリングし、同等の値を検索できるのが特徴です。データ保守における強い一貫性、大規模なトランザクション量、および構造の変更が少ないアプリケーション シナリオに適しています。
非リレーショナル データベース (NoSQL): データの保存にテーブルを使用しませんが、ドキュメント、列ファミリー、キー値などのさまざまなデータ モデルを使用してデータを保存します。利点は、大量のデータを処理でき、同時読み取りと書き込みが可能であり、拡張性が高いことですが、JOIN 操作はサポートされていないため、複数テーブル操作や高いトランザクション要件が必要なアプリケーション シナリオには適していません。
ヒント: 非リレーショナル データベースの誕生の歴史
・非リレーショナルデータベースはNoSQLデータベースとも呼ばれますが、NoSQLの本来の意味は「No SQL」(SQLがない)ではなく、非リレーショナルデータベースを指す「Not Only SQL」です。 NoSQL データベースの出現は、リレーショナル データベースを完全に否定して終わらせるためのものではなく、従来のリレーショナル データベースを効果的に補完するものとして機能しました。
· インターネット上での Web 2.0 および Web 3.0 Web サイトの台頭により、従来のリレーショナル データベースは、拡大し続ける大量のデータ、超大規模で同時実行性の高い動的 Web サイトを処理する際に多くの問題や課題に直面しました。データベースは多くの問題や課題に直面しており、データベースの I/O ボトルネックやパフォーマンス ボトルネックを効果的に突破することは困難です。
· その結果、高パフォーマンス、高同時実行性、使いやすさを目的として、特定のシナリオに機能特化したデータベース製品が多数登場し、非リレーショナル データベースはそのようなシナリオで生まれ、急速に発展しました。これらの特定のシナリオでは、NoSQL データベースは想像を絶する効率とパフォーマンスを達成できます。 NoSQL は広義の非リレーショナル データベースであり、リレーショナル データベースと ACID 理論の長年にわたる統合を打ち破るものです。
· NoSQL データベースのデータ ストレージは固定テーブル構造を必要とせず、通常は接続操作が不要で、ビッグ データ アクセスにおいてリレーショナル データベースにはないパフォーマンス上の利点があり、データを水平かつスケーラブルに保存するエンタープライズ アプリケーションのニーズを満たします。 . より強力な機能のための要件。
NoSQL データベースには、現時点ではまだ統一された規格はなく、キーバリューデータベース、カラムストレージデータベース、ドキュメントデータベース、グラフデータベースの 4 つに大きく分類されています。
· Key-Value ストレージ データベース
キーと値のデータベースは、従来の言語で使用されるハッシュ テーブルに似ており、キーを介してデータの追加、クエリ、削除が可能であり、キーの主キーを使用してアクセスされるため、高いパフォーマンスとスケーラビリティを実現します。
キー/値データベースは主に、特定のキーとポインター (特定のデータを指す) を持つハッシュ テーブルを使用します。 IT システムの場合、キー/値モデルの利点は、シンプルさ、展開の容易さ、および高い同時実行性です。
・カラムストアデータベース
データベースのこの部分は通常、分散された方法で保存された大量のデータを処理するために使用されます。キーはまだ存在しますが、複数の列を指すという特徴があります。列は列ファミリーごとに配置されます。例: Cassandra、HBase、Riak。
・文書データベース
ドキュメント データベースは Lotus Notes オフィス ソフトウェアからインスピレーションを得たもので、最初の Key-Value ストアに似ています。このタイプのデータ モデルは、バージョン管理されたドキュメント、つまり JSON などの特定の形式で保存された半構造化ドキュメントです。ドキュメント データベースは、キー値をネストできるようにするキー値データベースのアップグレード バージョンとみなすことができ、Web ページなどの複雑なデータを処理する場合、ドキュメント データベースは従来のキー値データベースよりもクエリ効率が高くなります。例: CouchDB、MongoDb。
・グラフデータベース
グラフデータベースはその名の通り、グラフの関係を格納したデータベースであり、グラフモデルはグラフデータベースにおける重要な概念です。グラフ モデルは、ノードとエッジの 2 つの要素で構成されます。各ノードはエンティティ (人、場所、物など) を表し、各エッジは 2 つのノード間の接続を表します。この一般的な構造は、さまざまなシナリオの構築に使用できます。 、ソーシャルネットワークや関係によって定義されるその他のものなど。特徴は、高密度の接続と疎なデータを処理でき、高速で複雑なクエリをサポートすることです。 GraphDB と Neo4j は、一般的に使用されるグラフ データベースです。
さらに、大型モデル技術の爆発的な成長に伴い、新しいタイプのデータベースとして「大型モデルの海馬」 - Vector Database が現在最も注目されている技術となっています。
ベクターデータベース:
ベクトルデータベースとは、ベクトルデータをベクトル埋め込み形式で格納・管理するデータベースです。ベクトル データベースでは、各ベクトルに一意の識別子があり、連続ベクトル空間に格納できます。
画像、テキスト、音声、動画などの非構造化データを、何らかの変換や埋め込み学習によってベクトルデータに変換し、ベクトルデータベースに格納することで、画像、テキスト、音声、動画の類似検索や検索が可能になります。これは、完全一致や事前定義された基準に基づいてデータベースにクエリを実行する従来の方法を使用するのではなく、ベクトル データベースを使用して、意味論的または文脈上の意味に基づいて最も類似または関連性のあるデータを見つけることができることを意味します。
ベクトル データベースは、ベクトル データを処理する際に次のような特徴があります。
· 効率的なストレージとクエリ: ベクトル データベースは、ベクトル データを効率的に保存してクエリし、データの冗長性を削減し、クエリ効率を向上させるために、特定のストレージ構造とインデックス アルゴリズムを採用しています。
· 多次元クエリ: ベクトル データベースは多次元クエリをサポートしており、類似性クエリ、範囲クエリなど、ベクトルの複数の属性に基づいてクエリを実行できます。
· ベクトル類似度計算: ベクトル データベースは、ベクトルに対して類似度計算を実行して、最も類似したベクトル データを見つけることができ、レコメンド システムや画像検索などのアプリケーションでよく使用されます。
· 高い同時処理: ベクトル データベースは強力な同時処理機能を備えており、多数のベクトル データ クエリ リクエストを同時に処理できます。
· ベクター インデックスのサポート: ベクター データベースは、転置インデックス、KD ツリー、LSH などのさまざまなベクター インデックス テクノロジをサポートし、ベクター データのクエリを高速化します。
· 分散ストレージ: 一部のベクトル データベースは分散ストレージとコンピューティングをサポートしており、水平方向に拡張でき、大規模なベクトル データの処理に適しています。
ベクトル データベースは、インデックス技術とベクトル検索アルゴリズムを使用して効率的な保存と検索を実現し、高次元ビッグ データへの迅速な対応を実現します。ベクター データベースも非リレーショナル データベースの一種で、ベクター データの管理に加えて、従来の構造化データの管理もサポートしています。実際の使用では、ベクトル フィールドと構造化フィールドを同時にフィルタリングして取得するシナリオが多くありますが、これはベクトル データベースの課題でもあります。
3. データベースの特徴
· データ共有を有効にする
データ共有には、すべてのユーザーがデータベース内のデータに同時にアクセスできること、およびユーザーがインターフェイスを介してさまざまな方法でデータベースを使用し、データ共有を提供できることも含まれます。
· データの冗長性を削減する
ファイルシステムと比較して、データベースはデータの共有を実現するため、ユーザーがアプリケーションファイルを個別に作成する必要がありません。大量の重複データを削減し、データの冗長性を減らし、データの一貫性を維持します。
· データの独立性
データの独立性には、論理的独立性(データベースの論理構造とデータベース内のアプリケーションプログラムが互いに独立している)と物理的独立性(データの物理的構造が変化してもデータの論理構造に影響を与えない)がある。
・データの一元管理
ファイル管理方式ではデータは分散した状態となり、異なるユーザーや異なるプロセスの同一ユーザーのファイル間には関連性がありません。データベースはデータを一元的に制御および管理するために使用でき、データ モデルはさまざまなデータの構成とデータ間の接続を表すために使用できます。
· データのセキュリティと信頼性を確保するためのデータの一貫性と保守性
· セキュリティ管理: データの損失、誤った更新、不正使用を防止します。
· 完全性管理: データの正確性、有効性、互換性を保証します。
· 同時実行制御: 同じ期間内でのデータへの複数のアクセスを許可し、ユーザー間の異常な対話を防ぎます。
· 障害回復: データベース管理システムは、データの損傷を防ぐために障害を適時に検出および修復するための一連の方法を提供します。