web-dev-qa-db-ja.com

非リレーショナルデータベースの例は何ですか?どこで/どのように使用されていますか?

私は以前からリレーショナルデータベースを使用してきましたが、non-relationalである他のタイプのデータベースが存在する必要があることに最近気づきました。

非リレーショナルデータベースの例にはどのようなものがありますか?それらは実際の世界でどこでどのように使用されていますか?リレーショナルデータベースではなく、非リレーショナルデータベースを使用する理由は何ですか。

編集:他の2つの同様の質問が回答で言及されています:

28
Kip
  • フラットファイル
    • CSVまたはその他の区切られたデータ
    • スプレッドシート
    • / etc/passwd
    • mboxメールファイル
  • 階層的
    • Windowsレジストリ
    • Berkley DBの代わりにファイルシステムFSFSを使用したSubversion
12
Michael Burr

ここで言及されているデータベースのタイプの確かに不明瞭ですが興味深い代替手段は、連想データベース、たとえば LazySoft Technology のSentencesなどです。 。あなたがダウンロードして自分で試すことができる無料の個人用バージョンがあります。 Enterprise Editionも無料ですが、会社へのリクエストが必要です。

基本的に、連想データベースを使用すると、私たちの頭脳が行うのとほぼ同じ方法で情報を格納できます。 「Sentences」という名前は、この情報をsubject-verb-object構文で表すことができる方法に由来しています。

  • トムは兄弟ですローラ
  • サンフランシスコはカリフォルニアにあります
  • マイクのクレジット制限は$ 10,000です

文は別の文の主語または目的語になる場合があります。

  • (バス570到着8:15 am)on日曜
  • メアリーと言います(パイウィリアムによって焼き上げられました)

したがって、すべてをエンティティおよび関連付けに要約できます。

もちろん、ここで表現できるものよりもはるかに多くの文があります。 LazySoftの ホワイトペーパー で詳細を読むことをお勧めします。

"データの連想モデル" は、センテンスの作成者の1人であるサイモンウィリアムズによるPDF形式で利用できる本です。

14
Jeff Jones

これまで見てきた非リレーショナルドキュメント指向データベースは Apache CouchDB です。

Apache CouchDBは、RESTful HTTP/JSON APIを介してアクセスできる、分散型のフォールトトレラントでスキーマフリーのドキュメント指向データベースです。他の機能の中でも特に、双方向の競合の検出と解決を備えた堅牢なインクリメンタルレプリケーションを提供し、デフォルトのビュー定義言語として機能するJavaScriptを備えたテーブル指向のビューエンジンを使用してクエリとインデックス付けが可能です。

私たちの関心は、Javaから設定オブジェクトをシリアル化し、XULRunnerベースのクライアントアプリケーションからJavascriptを使用して同じように簡単にアクセスできる、形状の変更に影響されない分散アクセスユーザー設定ストアを提供することでした。

13
TomC

「バークレースタイルのデータベース」または「キー/値」データベースであると主張するデータベースは、リレーショナルではありません。

これらのデータベースは通常、複雑なハッシュアルゴリズムに基づいており、キーに基づいて非常に高速な検索を提供しますO(1).

たとえば、リレーショナルデータベースでは、構造を正規化し、多くのテーブルを結合して単一の結果セットを作成します。

キー/値データベースでは、可能な限り非正規化し、一意のキーを使用してデータを検索します。

2つのソースからデータをプルする必要がある場合は、結果のセットを手動で結合する必要があります。

9
FlySwat

すべてのデータベースはもともと非リレーショナルでしたが、DB2とOracleが登場したのは、1980年代半ばになってからでした。その前に、フラットファイルまたは階層型のほとんどのデータベース。

フラットファイルは本質的に退屈ですが、特にDB2が最初のインスタンスで階層実装(つまりVSAM)の上に実際に実装されたため、階層データベースはそれほど退屈ではありません。 VSAMはメインフレームシステムでもまだ存在すると私は信じており、いくつかの非常に重要です。

DB/1(今ではあいまいなので、ウィキペディアのリンクすら見つけられません)は、IBMの前身であるDB2へのプライムタイムデータベース(したがって、名前)でした。これは階層的でした-基本的に、任意の数または「ルート」レコードで構成されるファイルがあり、通常はキーで直接アクセスできます。各ルートレコードには、任意の数の子レコードを含めることができ、それぞれのレコードには独自の子レコードを含めることができます。最終的な影響は、各ルートが潜在的なツリーのような構造の最上位にあるインデックスファイルまたはルートレコードです。子レコードへのアクセスは注意が必要です。直接アクセスには制限があったため、通常は必要なレコードを探してツリーを走査することになります。 「データベース」には、通常、キーによって関連付けられたこれらのファイルをいくつでも含めることができます。

これには大きな欠点がありました-特に実際に何かを行うには完全なプログラムを作成する必要がありました-基本的に、SQLで数分でできることに対して、基本的には1日の作業に相当します。しかし、それは実際には実行速度を評価したものでした。当時、メインフレームは(データI/O向けに最適化されていますが)iPhoneの処理能力を備えていました。これはDB/1の問題ではなく、プログラマーが意味のあるCPU時間よりも安価な世界では問題ではありませんでした。

8
Cruachan

Google App Engine Datastore

App Engineデータストアはリレーショナルデータベースではありません。データストアインターフェースには従来のデータベースと同じ機能が多数ありますが、データストアの独自の特性により、自動的にスケーリングする機能を利用してデータを設計および管理する方法が異なります。

7
Guido

まだ登場していない他の2種類のデータベース:

  1. コンテンツリポジトリは、コンテンツ(ファイル、ドキュメント、画像など)用に設計されたデータベースです。それらは通常、コンテンツを閲覧する階層的な方法、検索、異なるフォーマット間の変換、バージョン管理など、付加的な構造を持っています。例-Alfresco、Documentum、JackRabbit、Day、OpenText、他の多くのECMベンダー。

  2. ディレクトリ、つまり、Active Directory、またはLDAPディレクトリ。これらは、低書き込み/高読み取りのシナリオ用に設計されたデータベースであり、地理的に離れた距離/待ち時間の長い接続に高度に分散されています。主に認証/承認に使用されますが、ユースケースが要件に一致する場合は、それらは必須ではありません。

5
Jean Barmash

OSIsoftのPI履歴データベースは非リレーショナルです。タイムスタンプ付きのデータをアーカイブするためだけに作成されています。業界、特にこれらすべての「ダッシュボード」のバックエンドデータベースとして、多く使用されています。

結合がないため、リレーショナルである必要はありません。

5
Lance Roberts
  1. XMLデータベース xindice
  2. オブジェクトデータベース db4o

リレーショナルデータベースの概念は非常に論争の的になることに注意してください。 C。J. Date などの純粋主義者は、一般的に使用されている多くのデータベース(OracleやSQL Serverなど)は、「リレーショナル」と呼ばれるリレーショナルモデルに十分準拠していないと主張します。

4
johnstok

次元データベースは、非リレーショナルデータベースの優れた例です。これらは、KPIおよびその他のタイプの集計データまたは統計データの「ビジネスダッシュボード」/「ビジネスインテリジェンス」に非常によく使用されます。これらは通常、リレーショナルデータベースから読み込まれ、特定の状況でより良いパフォーマンスを提供できます。

http://en.wikipedia.org/wiki/Dimensional_database

4
Mario

非リレーショナルデータベースは、Coddの要件を満たしていません。システム間Cachéは、古いPickオペレーティングシステムのデータベースの完全な再書き込み/再設計を継ぎ合わせます。私がCachéについて読んだ小さなことから、それはうまく行われた再設計のようです。 SQLと同じように、.netプログラムはデータベースにアクセスできます。 Cachéの実行は、変更を必要としないPick OSプログラムです。 PickファイルをCachéにインポートすることで、古いグリーンスクリーンアプリケーションを実行できますが、.netを使用して新しいプログラムを作成できるため、すでに投資してきた長年のデータ設計を放棄することなくWindowsアプリケーションに移行できます。 Pick DBモデルの背景。 Pickデータベースは、完全に可変長のレコードとフィールドを使用します。すべてのテーブルは単一の一意のキーによってキー設定され、インデックスを読み取らずにアクセスできます。 Pickは、通常、最初の物理読み取りでディスクからアイテムを読み取るハッシュアルゴリズムを使用するようにシステムを設計しました(システムメンテナンスが正しく実行された場合)。 Pickのフィールドは型指定されていません。すべてのデータは文字列として保存され、キャストはプログラマ次第です。 NULLは空の文字列として格納されるため、SQLの場合のようにNULLがディスク領域を占有することはありません。外部キーは必要ありません。 「リレーショナルの世界」では、DBAはヘッダーテーブルと注文ラインアイテムテーブルを作成して注文する必要があります。 「ピックモデル」には、1つのテーブルがあります。たとえば、「注文日」は「1967年12月13日」からの日数を格納するフィールドです(データピックOSが初めてオンになりました)。ピックプログラマーには、2000年問題はありませんでした。 2番目の列は顧客番号になります。大きな違いは、製品番号の列に到達すると、「多値」(Codd Non-conformance)になることです。つまり、データベースはその列で1〜32000の製品番号を処理できます。注文数量などの他の列は、製品番号と制御/依存関係にあり、複数の値もあります。出荷数量に到達すると、ピックは3番目のディメンションに移動し、サブマルチバリューフィールドがあります。出荷番号列があり、その項目は、品目別の多価であり、その出荷番号のその品目の出荷数量を含むサブ多価です。内部結合は必要ありません。その注文のすべてのデータは、1つのテーブルと1つのレコードに格納されます。孤立した行はありません!次に、データ定義が少し異なります。辞書には、この表にない、または操作されているデータの定義を含めることができます。いくつかの例は、顧客名です。これは、「顧客番号列を使用して、顧客テーブルから名前フィールドを返すように定義されます。もう1つの例は、Line Item Extensionが、Quantity * Price/PricePerの計算として定義される場合です。 Cachéが10万を超えるインストールがあると主張しているどこかで読んだと思います。

4
CurtTampa

eXist-db は、古くからあるxmlデータベースです。これは、大量のxmlドキュメントに対して xquery に対して特に役立ちます。

3
JarrettV

Excelのフラットファイルデータベースは非リレーショナルであり、かなりの数のユーザーが使用していると思います。

実際には、他のテーブルと結合できないデータベーステーブルです。

3
BoltBait

オブジェクト指向データベースは、非リレーショナルデータベースの1つの興味深いタイプです。

取引セクターはOOデータベースを使用する場合があります。これは、各取引/契約がそのカテゴリの他の取引と似ているように見える場合がありますが、固有の属性もあるためです。関係を表すのは非常に困難です。

3
Mark Brady

グラフベースのdbmsの場合、neo4jがあります

階層dbmsの場合、標準のファイルシステムを使用するか、「スキーマ」を使用してLDAPの実装をサポートします。

2
John Nilsson

データを含むがそのデータ内の関係を表現しないファイルまたはファイルのグループは、非リレーショナルデータベースです。

2
EBGreen

RRDtool は、ログデータを格納および集約するように設計されています。サンプリング間隔を構成し、それにデータをフィードすると、時間ベースの結果が返されます。固定サイズのストレージ用に最適化されており、しばらくすると過去の結果の集計を開始します。たとえば、5分の時間間隔を持つラウンドロビンデータベースがあるとします。毎秒1回温度データを送信しても、結果は5分単位でのみ保存されます。 1週間後、それらの結果を平均して時間単位の値にします。 1か月後、毎時の結果は1日の数値に平均化されます。

RRDtoolは、一般に Cricket および [〜#〜] mrtg [〜#〜] などのツールのバックエンドとして使用され、数か月および数年にわたるネットワークおよび環境データを一気に追跡します。

2
Kirk Strauser

多くの答えがありますが、それらはすべて2つの主要なカテゴリのいずれかに分類されます。

  1. ナビゲーション。 Tree/HierarchyデータベースとGraphデータベースが含まれます。

  2. 最初の正規形(複数の値)を壊すデータベース。 Pickデータベース、Lotus Notes、CouchDBなどの子孫が含まれます。

編集:そしてもちろんBDBのようなキー/値ストアはリレーショナルではありませんが、それは言うまでもありませんね?つまり、これらは単なるキー/値ストアです。

2
David Mathers
  1. 私の会社www.smartsgroup.comには、「トランザクションログデータベース」と呼ばれる独自のデータベースエンジンがあります。フラットファイル上に構築されており、各ファイルには一連の「イベント」または「メッセージ」がバイナリ形式で含まれ、さらにこのデータのさまざまなインデックスと証券取引所の注文書の状態を再現するためのアルゴリズムが含まれています。順次更新および順次アクセス用に高度に最適化されています。

  2. 科学的アプリケーションでは、RDBMSではなく独自のデータベースエンジンを使用することも一般的です。また、脳波記録の世界最大のデータベースであるwww.brainresource.comで働いていました。そこではフラットファイルデータベースを使用しており、それはうまく機能しました。

  3. SmartsGroupは、非リレーショナルデータベーステーブルのような一時データベースも使用します。ただし、すべてのフィールドに対するすべての変更の履歴を保存するため、特定の日付の特定の行の状態を再現できます。

1
Tim Cooper

私の大学には 演繹データベース を研究するグループがあります。

1
mdm

dBase。そのように販売されましたが、要件を満たしていません。

1
NotMe

OOデータベースとして、IntersystemsCachéが思い浮かびます。一部の医療およびライブラリシステムはこれに基づいて構築されています。

1
Tomalak

上記にリンクされているDimensional DatabasesのWikiページが消えたようです。

一部の [〜#〜] olap [〜#〜] システムは、多次元データベース(MOLAP)に支えられており、財務分析でよく使用されます。インタラクティブなクライアントを提供し、さまざまなレベルの集計でデータをナビゲートできるようにします。

1
Tom