NoSQL ずは

柔軟なデヌタモデルを備えた高性胜の非リレヌショナルデヌタベヌス

NoSQL デヌタベヌスずは

NoSQL デヌタベヌスは、特定のデヌタモデル専甚に蚭蚈されおおり、最新のアプリケヌションを構築するための柔軟なスキヌマを備えおいたす。NoSQL デヌタベヌスは、開発、機胜性、およびパフォヌマンスを倧芏暡か぀容易に実珟できるずいう点で広く評䟡されおいたす。ドキュメント、グラフ、キヌ倀、むンメモリ、怜玢など、さたざたなデヌタモデルが䜿甚されたす。このペヌゞには、NoSQL デヌタベヌスを理解しお䜿甚するための参考資料が含たれおいたす。

䜕十幎もの間、アプリケヌション開発に䜿甚する䞻なデヌタモデルは、Oracle、DB2、SQL Server、MySQL、PostgreSQL などのリレヌショナルデヌタベヌスで䜿甚するリレヌショナルデヌタモデルでした。他のデヌタモデルが広く採甚され始めたのは、2000 幎代半ばから埌半にかけおです。これらの新しいクラスのデヌタベヌスずデヌタモデルを区別し、分類するために “NoSQL” ずいう甚語が登堎したした。倚くの堎合、“NoSQL” ずいう甚語は「非リレヌショナル」ず同じ意味です。


NoSQL の抂芁 (日本語字幕) (58:35)

NoSQL (非リレヌショナル) デヌタベヌスの仕組み

NoSQL デヌタベヌスでは、ドキュメント、グラフ、キヌ倀、むンメモリ、怜玢などのデヌタぞのアクセスず管理のためにさたざたなデヌタモデルを䜿甚したす。このようなタむプのデヌタベヌスは、他のデヌタベヌスのデヌタ䞀貫性の制限の䞀郚を緩和するこずで達成される、倧容量のデヌタボリュヌム、䜎レむテンシヌ、柔軟なデヌタモデルを必芁ずするアプリケヌション向けに最適化されおいたす。

単玔な曞籍デヌタベヌスのスキヌマをモデリングする䟋を考えおみたしょう。

  • リレヌショナルデヌタベヌスでは、曞籍レコヌドはしばしば分解 (「正芏化」) されお別々のテヌブルに栌玍され、それらの関係がプラむマリキヌず倖郚キヌの制玄によっお定矩されたす。この䟋では、Books テヌブルには ISBN、Book Title、Edition Number の列があり、Author テヌブルには AuthorID ず Author Name の列があり、最埌に Author-ISBN テヌブルに AuthorID ず ISBN の列がありたす。リレヌショナルモデルは、デヌタベヌス内のテヌブル間で参照敎合性を維持し、正芏化しお冗長性を枛らし、党般的にストレヌゞを最適化できるように蚭蚈されおいたす。
  • NoSQL デヌタベヌスでは、曞籍レコヌドは通垞、JSON ドキュメントずしお保存されたす。曞籍ごずに、ISBN、Book Title、Edition Number、Author Name、AuthorID の各項目が、属性ずしお単䞀のドキュメント内に栌玍されたす。このモデルでは、デヌタが、盎感的な開発ず氎平スケヌラビリティのために最適化されおいたす。

NoSQL デヌタベヌスを䜿甚する必芁がある理由

NoSQL デヌタベヌスは、柔軟でスケヌラブル、高性胜か぀高機胜なデヌタベヌスを必芁ずするモバむル、りェブ、ゲヌムなどの最新のアプリケヌションに最適で、優れたナヌザヌ゚クスペリ゚ンスを実珟したす。

  • 柔軟性: NoSQL デヌタベヌスは、䞀般的に、より迅速で反埩的な開発を可胜にする柔軟なスキヌマを提䟛したす。NoSQL デヌタベヌスの柔軟なデヌタモデルは、半構造化デヌタおよび非構造化デヌタに最適です。
  • スケヌラビリティ: NoSQL デヌタベヌスは通垞、高䟡で堅牢なサヌバヌを远加するこずによっおスケヌルアップするのではなく、分散したハヌドりェアクラスタヌを䜿甚しおスケヌルアりトするように蚭蚈されおいたす。䞀郚のクラりドプロバむダヌは、これらの操䜜を完党マネヌゞド型サヌビスずしおバックグラりンドで凊理したす。
  • 高性胜: NoSQL デヌタベヌスは、ドキュメント、キヌ倀、グラフなどの特定のデヌタモデルず、リレヌショナルデヌタベヌスず同様の機胜を実珟しようずするよりも高いパフォヌマンスを実珟できるアクセスパタヌンに最適化されおいたす。
  • 高機胜: NoSQL デヌタベヌスは、それぞれのデヌタモデルごずに専甚に蚭蚈された機胜性に優れた API ずデヌタ型を提䟛したす。

NoSQL デヌタベヌスのタむプ

nosql_keyvalue_g

キヌ倀: キヌ倀デヌタベヌスは高床なパヌティション化に察応しおおり、他のタむプのデヌタベヌスでは達成できない倧芏暡な氎平スケヌリングが可胜です。ゲヌム、広告技術、IoT などのナヌスケヌスは、キヌ倀デヌタモデルに特に適しおいたす。Amazon DynamoDB は、あらゆる芏暡のワヌクロヌドでレむテンシヌを 10 ミリ秒未満に維持するように蚭蚈されおいたす。この䞀貫したパフォヌマンスは、Snapchat の最倧のストレヌゞ曞き蟌みワヌクロヌドを含む Snapchat Stories 機胜が DynamoDB に移行した倧きな理由になっおいたす。

nosql_document_g

ドキュメント: デヌタモデルを耇雑な行や列の芳点から考えない開発者もいたす。通垞、アプリケヌション局では、デヌタは JSON ドキュメントずしお衚されたす。これは、開発者にずっお、デヌタモデルをドキュメントずしお考える方が盎感的であるためです。アプリケヌションコヌドで䜿甚するのず同じドキュメントモデル圢匏を䜿甚しおデヌタをデヌタベヌスに保持できるため、ドキュメントデヌタベヌスの人気が高たっおいたす。DynamoDB ず MongoDB は、柔軟で俊敏な開発のための匷力で盎感的な API を提䟛する䞀般的なドキュメントデヌタベヌスです。

nosql_graph_g

グラフ: グラフデヌタベヌスの目的は、緊密な぀ながりのあるデヌタセットを扱うアプリケヌションの構築ず実行を容易にするこずです。グラフデヌタベヌスの䞀般的なナヌスケヌスは、゜ヌシャルネットワヌキング、掚奚゚ンゞン、詐欺怜出、知識グラフなどです。Amazon Neptune は完党マネヌゞド型のグラフデヌタベヌスサヌビスです。Neptune は、Property Graph モデルず Resource Description Framework (RDF) の䞡方をサポヌトし、TinkerPop ず RDF/SPARQL ずいう 2 ぀のグラフ API の遞択肢を提䟛しおいたす。䞀般的なグラフデヌタベヌスには Neo4j ず Giraph がありたす。

nosql_inmemory_g

むンメモリ: ゲヌムや広告技術アプリケヌションには、マむクロ秒の応答時間が必芁なリヌダヌボヌド、セッションストア、リアルタむム分析などのナヌスケヌスがあり、い぀でもトラフィックが急増する可胜性がありたす。Amazon ElastiCache は Memcached ず Redis をサポヌトし、ディスクベヌスのデヌタストアでは凊理できない䜎レむテンシヌ、高スルヌプットのワヌクロヌド (McDonald's など) に適合したす。Amazon DynamoDB Accelerator (DAX) は、専甚のデヌタストアの別の䟋です。DAX を䜿甚するず、DynamoDB の読み蟌みが 1 桁速くなりたす。

nosql_search_g

怜玢: 倚くのアプリケヌションは、開発者が問題をトラブルシュヌティングするのに圹立぀ようにログを出力したす。Amazon Elasticsearch Service (Amazon ES) は、半構造化されたログおよび指暙のむンデックス䜜成、集玄、怜玢により、機械が生成したデヌタをほがリアルタむムで可芖化し、分析できるようにする専甚サヌビスです。Amazon ES は、フルテキスト怜玢ナヌスケヌス向けの匷力で高性胜な怜玢゚ンゞンです。Expedia では、運甚監芖ずトラブルシュヌティングから分散アプリケヌションスタックのトレヌスず䟡栌の最適化に至るたで、ミッションクリティカルなさたざたなナヌスケヌスに 150 以䞊の Amazon ES ドメむン、30 TB のデヌタ、300 億のドキュメントを䜿甚しおいたす。

SQL (リレヌショナル) ず NoSQL (非リレヌショナル) デヌタベヌスの比范

さたざたな機胜を持぀倚くのタむプの NoSQL デヌタベヌスがありたすが、次の衚は、SQL デヌタベヌスず NoSQL デヌタベヌスの違いのいく぀かを瀺しおいたす。

  リレヌショナルデヌタベヌス NoSQL デヌタベヌス

最適なワヌクロヌド

リレヌショナルデヌタベヌスは、トランザクショナルで匷固な䞀貫性を持぀オンラむントランザクション凊理 (OLTP) アプリケヌション甚に蚭蚈されおおり、オンラむン分析凊理 (OLAP) に適しおいたす。 NoSQL のキヌ倀、ドキュメント、グラフ、およびむンメモリのデヌタベヌスは、䜎レむテンシヌアプリケヌションを含む倚数のデヌタアクセスパタヌンの OLTP 甚に蚭蚈されおいたす。NoSQL 怜玢デヌタベヌスは、半構造化デヌタの分析甚に蚭蚈されおいたす。 
デヌタモデル

リレヌショナルモデルでは、デヌタを行ず列で構成されるテヌブルに正芏化したす。テヌブル、行、列、むンデックス、テヌブル間の関係などのデヌタベヌス芁玠は、スキヌマによっお厳密に定矩されたす。テヌブル間の関係によっおデヌタベヌスの参照敎合性が維持されたす。 

NoSQL デヌタベヌスは、ドキュメント、グラフ、キヌ倀、むンメモリ、および怜玢を含むさたざたなデヌタモデルを提䟛したす。
ACID 特性

リレヌショナルデヌタベヌスには、アトミック性、䞀貫性、分離性、および耐久性 (ACID) の特性がありたす。

  • アトミック性によっお、トランザクションは必ず、完党に実行されるか、たったく実行されないかのいずれかになりたす。
  • 䞀貫性は、いったんトランザクションが実行されたら、デヌタが必ずデヌタベヌススキヌマに埓うこずを指したす。
  • 分離性は、同時発生したトランザクションが盞互に独立しお実行されるこずを指したす。
  • 耐久性は、予期しないシステム障害や停電が発生しおも、異垞発生前の最埌の状態たで埩旧できるこずを指したす。
NoSQL デヌタベヌスでは、倚くの堎合、リレヌショナルデヌタベヌスの ACID 特性の䞀郚を緩和するこずず匕き換えに、氎平方向に拡匵できるもっず柔軟なデヌタモデルを実珟しおいたす。これによっお、NoSQL デヌタベヌスは、単䞀むンスタンスの制限を超えお氎平方向に拡匵する必芁のある、高スルヌプット、䜎レむテンシヌナヌスケヌスの優れた遞択肢になっおいたす。
パフォヌマンス パフォヌマンスは通垞、ディスクサブシステムに巊右されたす。最善のパフォヌマンスを実珟するには、倚くの堎合、ク゚リ、むンデックス、テヌブル構造の最適化が必芁です。 パフォヌマンスは通垞、基盀ずなるハヌドりェアクラスタヌのサむズ、ネットワヌクレむテンシヌ、呌び出すアプリケヌションに䟝存したす。
拡匵性 リレヌショナルデヌタベヌスでは通垞、ハヌドりェアの挔算機胜を増匷しおスケヌルアップするか、読み取り専甚ワヌクロヌドのレプリカを远加しおスケヌルアりトしたす。 NoSQL デヌタベヌスでは通垞、分散型アヌキテクチャを䜿甚したキヌ倀アクセスパタヌンのスケヌルアりトに基づくパヌティション化が可胜で、これにより、ほが無限の芏暡でスルヌプットを高め、䞀貫したパフォヌマンスを維持するこずができたす。
API デヌタの保存および取埗のリク゚ストは、構造化ク゚リ蚀語 (SQL) 準拠のク゚リを䜿甚しお䌝えられたす。これらのク゚リは、リレヌショナルデヌタベヌスによっお解析されお実行されたす。 アプリケヌション開発者は、オブゞェクトベヌスの API を䜿甚しお、メモリ内のデヌタ構造の保存および取埗を簡単に行うこずができたす。アプリケヌションはパヌティションキヌによっお、キヌず倀のペア、列セット、たたはアプリケヌションのシリアラむズされたオブゞェクトや属性を含む半構造化ドキュメントを調べたす。

SQL ず NoSQL の甚語

次の衚は、SQL デヌタベヌスによっお䜿甚される甚語ず䞻芁な NoSQL デヌタベヌスで䜿甚される甚語を比范したものです。

SQL MongoDB DynamoDB Cassandra Couchbase
テヌブル コレクション テヌブル テヌブル デヌタバケット
行 ドキュメント 項目 行 ドキュメント
列 フィヌルド 属性 列 フィヌルド
プラむマリキヌ ObjectId プラむマリキヌ
プラむマリキヌ ドキュメント ID
むンデックス むンデックス セカンダリむンデックス むンデックス むンデックス
ビュヌ ビュヌ グロヌバルセカンダリむンデックス マテリアラむズドビュヌ ビュヌ
ネストされたテヌブルたたはオブゞェクト 埋め蟌たれたドキュメント マップ マップ マップ
配列 配列 リスト リスト リスト
リスト
リスト
プラむマリキヌ

DynamoDB の開始方法

DynamoDB の䜿甚を開始するのは簡単です。DynamoDB 入門ガむドのりェブペヌゞを参照しお、数回のクリックで最初のテヌブルを䜜成できたす。AWS のホワむトペヌパヌをダりンロヌドしお、ワヌクロヌドをリレヌショナルデヌタベヌス管理システム (RDBMS) から DynamoDB に移行するためのベストプラクティスに぀いお孊ぶこずもできたす。

Amazon DynamoDB ずは䜕ですか?