NoSQL


NoSQL

「構造化ストレージ」構造化ストレージとも呼ばれる Microsoft テクノロジについては、COM 構造化ストレージを参照して
NoSQL (元は「非SQL」または「非リレーショナル」を指す) データベースは、リレーショナル データベースで使用される表形式の関係以外の方法でモデル化されたデータの格納と検索のためのメカニズムを提供します。このようなデータベースは 1960 年代後半から存在していましたが、「NoSQL」という名前が造られたのは 21 世紀初頭であり、これはWeb 2.0企業のニーズに端を発しています。 NoSQL データベースは、ビッグ データやリアルタイム Webアプリケーションでますます使用されています。NoSQL システムは、 SQLに似たクエリ言語をサポートしたり、多言語永続アーキテクチャで SQL データベースと共存したりできることを強調するために、SQL だけではないと呼ばれることも
このアプローチの動機には、設計の単純さ、マシンのクラスターへのより単純な「水平」スケーリング(リレーショナル データベースの問題)、可用性のより細かい制御、およびオブジェクトとリレーショナル インピーダンスのミスマッチの制限が含まれます。 NoSQL データベースで使用されるデータ構造 (例: key-value pair、wide column、graph、またはdocument ) は、リレーショナル データベースでデフォルトで使用されるものとは異なるため、一部の操作は NoSQL でより高速になります。特定の NoSQL データベースの特定の適合性は、解決する必要がある問題によって異なります。NoSQL データベースで使用されるデータ構造は、リレーショナル データベース テーブルよりも「柔軟性が高い」と見なされることも
多くの NoSQL ストアは、一貫性 ( CAP 定理の意味で) を犠牲にして、可用性、パーティション許容度、および速度を優先しています。NoSQL ストアの採用拡大に対する障壁には、低レベルのクエリ言語 (たとえば、SQL の代わりに) の使用、テーブル間でアドホック結合を実行する機能の欠如、標準化されたインターフェイスの欠如、および既存のリレーショナル データベースへの過去の巨額の投資が含まれます。 . ほとんどの NoSQL ストアには真のACIDトランザクションがありませんが、いくつかのデータベースではそれらを設計の中心にしています。
代わりに、ほとんどの NoSQL データベースは「結果整合性」の概念を提供します。この概念では、データベースの変更は「最終的に」(通常はミリ秒以内に) すべてのノードに伝播されます。これは、古い読み取りと呼ばれる問題です。さらに、一部の NoSQL システムでは、書き込みが失われたり、その他の形でデータが失われたりする場合が一部の NoSQL システムは、データ損失を回避するために先行書き込みロギングなどの概念を提供します。複数のデータベースにまたがる分散トランザクション処理の場合、データの整合性はさらに大きな課題であり、NoSQL とリレーショナル データベースの両方にとって困難です。リレーショナル データベースでは、「参照整合性制約が複数のデータベースにまたがることは許可されません」。分散トランザクション処理のために、 ACIDトランザクションとX/Open XA標準の両方を維持しているシステムはほとんどありません。インタラクティブなリレーショナル データベースは、コンフォメーション リレー解析技術を共通の機能として共有します。インターフェイス環境内の制限は、NoSQL サービスがほとんどのオペレーティング システムにアクセスできるように、セマンティック仮想化プロトコルを使用して克服されます。
コンテンツ
1 歴史
2 種類と例
2.1 キー値ストア 2.2 ドキュメント ストア 2.3 グラフ
3 パフォーマンス
4 リレーショナル データの処理
4.1 複数のクエリ 4.2 キャッシング、レプリケーション、正規化されていないデータ 4.3 ネストデータ
5 ACID と参加のサポート
6 こちらもご覧ください
7 参考文献
8 参考文献
9 外部リンク

歴史
NoSQLという用語は、1998 年に Carlo Strozzi によって使用され、軽量のStrozzi NoSQL オープンソース リレーショナル データベースに名前を付けました。これは、標準の構造化照会言語(SQL) インターフェイスを公開していませんが、リレーショナルでした。彼の NoSQL RDBMS は、2009 年頃の NoSQL データベースの一般的な概念とは異なります。Strozzi は、現在の NoSQL の動きは「リレーショナル モデルから完全に逸脱しているため、より適切に「NoREL」と呼ばれるべきだった」と示唆しており、「リレーショナルではない」と言及しています。
当時Last.fmの開発者だった Johan Oskarsson は、2009 年初頭に「オープンソースの分散型非リレーショナル データベース」について話し合うイベントを組織したときに、NoSQLという用語を再導入しました。この名前は、Google のBigtable / MapReduceや Amazon のDynamoDBのオープン ソース クローンを含む、ますます多くの非リレーショナル分散データ ストアの出現にラベルを付けようとしました。

種類と例
NoSQL データベースを分類するにはさまざまな方法があり、さまざまなカテゴリとサブカテゴリがあり、その一部は重複しています。以下は、データモデルによる非網羅的な分類と例です:
タイプ このタイプの顕著な例
キー値キャッシュ Apache Ignite、Couchbase、Coherence、eXtreme Scale、Hazelcast、Infinispan、Memcached、Redis、Velocity
キー値ストア Azure Cosmos DB、ArangoDB、Amazon DynamoDB、Aerospike、Couchbase、ScyllaDB
キー値ストア (結果整合性) Azure Cosmos DB、Oracle NoSQL データベース、Riak、Voldemort
キー値ストア (順序付き) FoundationDB、InfinityDB、LMDB、MemcacheDB
タプルストア Apache River、GigaSpaces、Tarantool、TIBCO ActiveSpaces、OpenLink Virtuoso
トリプルストア AllegroGraph、MarkLogic、Ontotext-OWLIM、Oracle NoSQL データベース、Profium Sense、Virtuoso Universal Server
オブジェクト データベース Objectivity/DB、Perst、ZopeDB、db4o、GemStone/S、InterSystems Caché、JADE、ObjectDatabase++、ObjectDB、ObjectStore、ODABA、Realm、OpenLink Virtuoso、Versant オブジェクト データベース、ZODB
ドキュメント ストア Azure Cosmos DB、ArangoDB、BaseX、Clusterpoint、Couchbase、CouchDB、DocumentDB、eXist-db、IBM Domino、MarkLogic、MongoDB、RavenDB、Qizx、RethinkDB、Elasticsearch、OrientDB
ワイド カラム ストア Azure Cosmos DB、Amazon DynamoDB、Bigtable、Cassandra、Google Cloud Datastore、HBase、Hypertable、ScyllaDB
ネイティブ マルチモデル データベース ArangoDB、Azure Cosmos DB、OrientDB、MarkLogic、Apache Ignite、 Couchbase、FoundationDB、Oracle データベース
グラフデータベース Azure Cosmos DB、AllegroGraph、ArangoDB、InfiniteGraph、Apache Giraph、MarkLogic、Neo4J、OrientDB、Virtuoso
多値データベース D3 Pick データベース、Extensible Storage Engine (ESE/NT)、InfinityDB、InterSystems Caché、jBASE Pick データベース、mvBase Rocket ソフトウェア、mvEnterprise Rocket ソフトウェア、Northgate Information Solutions Reality (元の Pick/MV データベース)、OpenQM、Revelation Software の OpenInsight (Windows ) および Advanced Revelation (DOS)、UniData Rocket U2、UniVerse Rocket U2

キー値ストア
キー値データベース
キー値 (KV) ストアは、基本的なデータ モデルとして連想配列(マップまたはディクショナリとも呼ばれます) を使用します。このモデルでは、データはキーと値のペアのコレクションとして表され、考えられる各キーはコレクション内で最大 1 回出現します。
キーと値のモデルは、最も単純で重要なデータ モデルの 1 つであり、多くの場合、より豊富なデータ モデルがその拡張として実装されます。キー値モデルは、辞書順でキーを保持する離散的に順序付けられたモデルに拡張できます。この拡張機能は、選択的なキー範囲を効率的に取得できるという点で計算能力が高いです。
Key-Value ストアでは、結果整合性からシリアル化可能性までの一貫性モデルを使用できます。一部のデータベースは、キーの順序付けをサポートしています。さまざまなハードウェア実装があり、データをメモリ (RAM) に保存するユーザーもいれば、ソリッド ステート ドライブ(SSD) または回転ディスク(別名、ハードディスク ドライブ (HDD)) に保存するユーザーもいます。

ドキュメント ストア
ドキュメント指向データベースとXML データベース
ドキュメント ストアの中心的な概念は、「ドキュメント」です。この定義の詳細はドキュメント指向のデータベースによって異なりますが、それらはすべて、ドキュメントがデータ (または情報) をカプセル化し、何らかの標準的な形式またはエンコーディングでエンコードすることを前提としています。使用されているエンコーディングには、XML、YAML、JSON 、およびBSONなどのバイナリ形式が含まれます。ドキュメントは、そのドキュメントを表す一意のキーを介してデータベース内でアドレス指定されます。ドキュメント指向データベースのもう 1 つの特徴は、コンテンツに基づいてドキュメントを取得するための API またはクエリ言語です。
異なる実装では、ドキュメントを整理および/またはグループ化するさまざまな方法が提供されます。
コレクション
タグ
非表示のメタデータ
ディレクトリ階層
リレーショナル データベースと比較すると、コレクションはテーブルに似ており、ドキュメントはレコードに似ていると考えることができます。ただし、それらは異なります。テーブル内のすべてのレコードには同じシーケンスのフィールドがありますが、コレクション内のドキュメントにはまったく異なるフィールドが含まれる場合が

グラフ
グラフ データベース
グラフ データベースは、有限数の関係によって接続された要素で構成されるグラフとして関係が適切に表現されるデータ用に設計されています。データの例には、社会関係、公共交通機関のリンク、道路地図、ネットワーク トポロジなどが
グラフ データベースとそのクエリ言語
名前 言語 ノート
アレグログラフ スパークル RDFトリプルストア
アマゾン海王星 グレムリン、SPARQL グラフデータベース
ArangoDB AQL、JavaScript、GraphQL マルチモデル DBMSドキュメント、グラフ データベース、キー値ストア
アズール コスモス データベース グレムリン グラフデータベース
DEX/スパークシー C++、Java、C#、Python グラフデータベース
フロックDB スカラ グラフデータベース
IBM Db2 スパークル DB2 10 で追加されたRDFトリプルストア
無限グラフ ジャワ グラフデータベース
ヤヌスグラフ ジャワ グラフデータベース
マークロジック Java、JavaScript、SPARQL、XQuery マルチモデルドキュメント データベースとRDFトリプル ストア
Neo4j サイファー グラフデータベース
OpenLink 名人 C++、C#、Java、SPARQL ミドルウェアとデータベース エンジンのハイブリッド
オラクル スパルクル 1.1 11gで追加されたRDFトリプル・ストア
オリエントDB ジャワ、SQL マルチモデルドキュメントおよびグラフ データベース
オウリム Java、SPARQL 1.1 RDFトリプルストア
プロフィウムセンス Java、SPARQL RDFトリプルストア
レディスグラフ サイファー グラフデータベース
Sqrrl エンタープライズ ジャワ グラフデータベース
ターミナルDB JavaScript、Python、データログ オープンソースの RDF トリプル ストアとドキュメント ストア

パフォーマンス
NoSQL データベースのパフォーマンスは、通常、操作/秒として測定されるスループットのメトリックを使用して評価されます。パフォーマンス評価では、実動構成、データベースのパラメーター、予想されるデータ量、同時ユーザー ワークロードなどの適切なベンチマークに注意を払う必要が
Ben Scofield は、NoSQL データベースのさまざまなカテゴリを次のように評価しました。
データ・モデル パフォーマンス スケーラビリティ 柔軟性 複雑 機能性
キー値ストア 高い 高い 高い なし 変数 (なし)
列指向のストア 高い 高い 適度 低い 最小限の
ドキュメント指向のストア 高い 可変(高) 高い 低い 可変(低)
グラフデータベース 変数 変数 高い 高い グラフ理論
リレーショナル データベース 変数 変数 低い 適度 関係代数
パフォーマンスとスケーラビリティの比較は、YCSBベンチマークを使用して最も一般的に行われます。

リレーショナル データの処理
ほとんどの NoSQL データベースにはクエリで結合する機能がないため、通常、データベース スキーマは別の方法で設計する必要がNoSQL データベースでリレーショナル データを処理するには、主に 3 つの手法が(結合をサポートする NoSQL データベースの結合と ACID のサポートの表を参照して)

複数のクエリ
1 回のクエリですべてのデータを取得する代わりに、複数のクエリを実行して目的のデータを取得するのが一般的です。NoSQL クエリは多くの場合、従来の SQL クエリよりも高速であるため、追加のクエリのコストは許容できる場合が過剰な数のクエリが必要な場合は、他の 2 つの方法のいずれかがより適切です。

キャッシング、レプリケーション、正規化されていないデータ
外部キーのみを格納する代わりに、モデルのデータとともに実際の外部値を格納するのが一般的です。たとえば、各ブログ コメントには、ユーザー ID に加えてユーザー名が含まれている場合があるため、別のルックアップを必要とせずにユーザー名に簡単にアクセスできます。ただし、ユーザー名が変更されると、データベース内の多くの場所でこれを変更する必要がしたがって、このアプローチは、読み取りが書き込みよりもはるかに一般的である場合に効果的です。

ネストデータ
MongoDB のようなドキュメント データベースでは、より少ない数のコレクションにより多くのデータを配置するのが一般的です。たとえば、ブログ アプリケーションでは、1 回の取得ですべてのコメントを取得できるように、コメントをブログ投稿ドキュメント内に格納することを選択できます。したがって、このアプローチでは、1 つのドキュメントに特定のタスクに必要なすべてのデータが含まれます。

ACID と参加のサポート
データベースのドキュメントでそのように主張されている場合、データベースはACIDプロパティ (原子性、一貫性、分離、耐久性) または結合操作をサポートしているとマークされます。ただし、これは必ずしも、ほとんどの SQL データベースと同様の方法で機能が完全にサポートされていることを意味するわけではありません。
データベース 酸 ジョイン
エアロスパイク はい いいえ
アパッチ・イグナイト はい はい
ArangoDB はい はい
Amazon DynamoDB はい いいえ
カウチベース はい はい
CouchDB はい はい
IBM Db2 はい はい
インフィニティDB はい いいえ
LMDB はい いいえ
マークロジック はい はい
モンゴDB はい はい
オリエントDB はい はい
^ 結合は必ずしもドキュメント データベースに適用されるわけではありませんが、MarkLogic はセマンティクスを使用して結合を行うことができます。
^ MongoDB は、バージョン 5.1 までシャード コレクションからの参加をサポートしていませんでした。
^ OrientDB は、外部レコードへの直接リンクを格納することにより、リンクを使用して 1:1 結合を解決できます。

こちらもご覧ください
CAP定理
オブジェクトデータベース管理システムの比較
構造化ストレージ ソフトウェアの比較
C++
データベースのスケーラビリティ
分散キャッシュ
ファセット検索
マルチバリューデータベース
マルチモデルデータベース
トリプルストア
スキーマに依存しないデータベース

参考文献
^ http://nosql-database.org/「NoSQL の定義: 次世代データベースは主にいくつかのポイントに対応しています: 非リレーショナル、分散型、オープンソース、および水平方向にスケーラブルです」. ^次の場所にジャンプ:a b Leavitt、Neal (2010)。「NoSQL データベースは期待どおりに機能するか?」 (PDF). IEEEコンピューター。43(2): 12–14. ドイ:10.1109/MC.2010.58. S2CID 26876882. ^ Mohan、C.(2013)。歴史は繰り返される: NoSQL Hoopla の賢明な面と非感覚的な SQL 面 (PDF)。議事録 第16回国際会議 データベース技術の拡張について。
^ 「Amazon は ‘NoSQL’ データベースで未来に戻る」 . 有線。2012 年 1 月 19 日。2017年3月6日閲覧。
^ 「RDBMS がデータベース市場を支配していますが、NoSQL システムが追いついています」 . DB-Engines.com。2013 年 11 月 21 日。2013年 11 月 24 日閲覧。
^ 「NoSQL(SQLに限らず)」 . Not Only SQL とも呼ばれる NoSQL データベース ^ ファウラー、マーティン。”NosqlDefinition” . NoSQL の支持者の多くは、NoSQL は SQL に対して「ノー」を意味するのではなく、SQL だけではないことを意味すると述べています。
^ NoSQL Distilled: 多言語永続性の新しい世界への簡単なガイド。Addison-Wesley Educational Publishers Inc、2009 年、 ISBN  978-0321826626 . ^ フォーゲルス、ヴェルナー (2012 年 1 月 18 日)。「Amazon DynamoDB – インターネット規模のアプリケーション向けに設計された高速でスケーラブルな NoSQL データベース サービス」 . 配布されたすべてのもの。2017年3月6日閲覧。
^ グローリンガー、K.ワシントン州東野; ティワリ、A。カプレッツ、MAM (2013)。「クラウド環境でのデータ管理: NoSQL および NewSQL データ ストア」 (PDF) . アイラ、スプリンガー。2014年 1 月 8 日閲覧。
^ 「Jepsen: MongoDB の古い読み取り」 . Aphyr.com . 2015 年 4 月 20 日。2017年3月6日閲覧。
^ 「Typesafe Reactive Platform での大容量データ分析」 . Slideshare.net . 2017年3月6日閲覧。
^ ファウラー、アダム。「NoSQL の 10 の誤解」 . ダミーズ.com 。2017年3月6日閲覧。
^ 「No! to SQL and No! No! NoSQL | 非常に多くの Oracle マニュアル、非常に少ない時間」 . Iggyfernandez.wordpress.com . 2017年3月6日閲覧。
^ チャップル、マイク。「ACID モデル」 . about.com。
^ フィオーレ、S. (2011)。グリッドおよびクラウド データベース管理。スプリンガー サイエンス & ビジネス メディア。p。210。
^ ローレンス、MySQL および MongoDB を含むリレーショナル SQL および NoSQL システムの統合と仮想化 (2014)。「MySQL と MongoDB を含むリレーショナル SQL と NoSQL システムの統合と仮想化」. 計算科学と計算知能に関する国際会議 1. ^ リス、アダム。マットソン、ヤコブ(2010)。「大規模データのストレージ ソリューションの調査: データのリアルタイム抽出とバッチ挿入のための、パフォーマンスが高くスケーラブルなデータ ストレージ ソリューションの比較」 (PDF) . Göteborg: チャルマース工科大学コンピュータ科学工学科。p。70 . 2011年 5 月 12 日閲覧。Carlo Strozzi は、1998 年に、SQL インターフェイスを提供しないオープン ソースのリレーショナル データベースの名前として、NoSQL という用語を初めて使用しました ^ 「NoSQL リレーショナル データベース管理システム: ホームページ」 . Strozzi.it. 2007 年 10 月 2 日。2010年 3 月 29 日閲覧。
^ 「NoSQL 2009」 . Blog.sym-link.com。2009 年 5 月 12 日。2011年 7 月 16 日に元の場所からアーカイブされました。2010年 3 月 29 日閲覧。
^ ストラウフ、クリストフ。「NoSQL データベース」 (PDF) . pp.23–24 。2017年8月27日閲覧。
^ https://apacheignite.readme.io/docs Ignite ドキュメント ^ https://www.infoworld.com/article/3135070/data-center/fire-up-big-data-processing-with-apache-ignite.html fire-up-big-data-processing-with-apache-発火 ^ サンディ (2011 年 1 月 14 日)。「キー バリュー ストアと NoSQL ムーブメント」 . スタック交換。2012年1月1日閲覧。キーと値のストアを使用すると、アプリケーション開発者はスキーマのないデータを格納できます。このデータは通常、キーを表す文字列と、「キーと値」の関係で値と見なされる実際のデータで構成されます。通常、データ自体は、プログラミング言語の何らかのプリミティブ (文字列、整数、または配列) か、プログラミング言語のキー値ストアへのバインディングによってマーシャリングされるオブジェクトです。この構造により、固定データ モデルが不要になり、適切な書式設定が可能になります。
^ Seeger、マーク (2009 年 9 月 21 日)。「Key-Value ストア: 実用的な概要」 (PDF) . マーク・シーガー。2012年1月1日閲覧。Key-Value ストアは、データの格納とアクセスに関して、リレーショナル データベース システムに代わる高性能な手段を提供します。このホワイト ペーパーでは、現在利用可能なキーと値のストアの一部と、それらの Ruby プログラミング言語へのインターフェイスについて簡単に説明します。
^ カツォフ、イリヤ (2012 年 3 月 1 日)。「NoSQL データ モデリング テクニック」 . イリヤ・カツォフ。2014年 5 月 8 日閲覧。
^ 「TerminusX – なぜ TerminusX なのか」 . terminusdb.com 。2021年12月16日閲覧。
^ スコフィールド、ベン (2010 年 1 月 14 日)。「NoSQL – リレーショナル データベースの死(?)」. 2014年 6 月 26 日閲覧。
^ 「リレーショナルから NoSQL への移行: 開始方法」 . Couchbase.com . 2019年11月11日閲覧。
^ 「MarkLogic との結合はできませんか? それは単にセマンティクスの問題です! – 一般的なネットワーク」 . Gennet.com。2017 年 3 月 3 日にオリジナルからアーカイブされました。2017年3月6日閲覧。
^ 「シャード コレクションの制限」 . docs.mongodb.com 。2020年1月24日閲覧。
^ 「SQLリファレンス・OrientDBマニュアル」 . OrientDB.com . 2020年1月24日閲覧。

参考文献
サダラージ、プラモド; ファウラー、マーティン(2012)。NoSQL Distilled: 多言語永続性の新しい世界への簡単なガイド. アディソン・ウェズリー。ISBN 978-0-321-82662-6.
マクレアリー、ダン。ケリー、アン(2013)。Making Sense of NoSQL: マネージャーと私たちのためのガイド. ISBN 9781617291074.
ヴィーゼ、レナ(2015)。SQL、NoSQL、クラウド、および分散データベースの高度なデータ管理。DeGruyter/オルデンブール。ISBN 978-3-11-044140-6.
ストラウフ、クリストフ (2012)。「NoSQL データベース」 (PDF) .
モニルザマン、AB; ホセイン、SA (2013)。「NoSQL データベース: ビッグデータ分析のためのデータベースの新時代 – 分類、特性、および比較」. arXiv : 1307.0191 。
Orend、Kai(2013)。「NoSQL データベースの分析と分類、およびオブジェクト リレーショナル永続レイヤーを置き換える能力の評価」。CiteSeerX  10.1.1.184.483 .
クリシュナン、ガネーシャ。クルカルニ、サラン。Dadbhawala、Dharmesh Kirit。「バージョン化された情報を共有、統合、および報告するための方法およびシステム」 .

外部リンク
ストラウフ、クリストフ。「NoSQLホワイトペーパー」 (PDF) . シュトゥットガルト: Hochschule der Medien.
エドリッヒ、ステファン。「NoSQLデータベース一覧」 .
ノイバウアー、ピーター (2010)。「グラフ データベース、NOSQL および Neo4j」 .
ブシク、セルゲイ (2012)。「ベンダーに依存しない NoSQL データベースの比較: Cassandra、HBase、MongoDB、Riak」 . ネットワークワールド。
ジカリ、ロベルト V. (2014)。「NoSQL データ ストア – 記事、論文、プレゼンテーション」 . odbms.org。 ·