NoSQLは最近、業界で大きな注目を集めています。リレーショナルデータベースストレージでの使用に最適なユースケースについて、人々の考えが非常に興味を持っています。開発者が特定のデータセットがNoSQLソリューションにより適していると考えるきっかけになります。特に興味があるのは MongoDB と CouchDB のようですPHP開発に関して最も多くの報道を得て、それが私の焦点です。
とにかくMongoDBの優れたユースケースは、MongoDBサイトで言及されています。指定された例は、リアルタイム分析、ロギング、および全文検索です。これらの記事はすべて読む価値があります http://www.mongodb.com/use-cases
また、NoSQLデータベースがどのタイプのプロジェクトに最も適しているかについての優れた記事もあります。 http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
リレーショナルデータモデルをMongoDBやCouchDBなどのNoSQLデータベースにマップしようとしないことをお約束します。これは、開発者が新興技術を評価する際に犯す最も一般的な間違いです。
このアプローチは、車を取り、それを使用してカートを馬のように道路から引き下ろそうとすることに似ています。
もちろん、すべての人の経験による自然な反応ですが、ドキュメントデータベースを使用することの本当の価値は、データモデルを簡素化し、開発者としての苦痛を最小限に抑えることができることです。コードベースが縮小し、バグが少なくなり、見つけやすくなり、パフォーマンスが向上し、スケールがはるかに簡単になります。
Joomlaの創設者として私は偏見があります:-)が、CMSの分野から来ているので、MongoDBのようなものは、コンテンツがドキュメントシステムに非常に自然にマップされるため、特効薬です。
MongoDBのもう1つの優れたケースはリアルタイム分析です。これは、MongoDBが特に並行性に関して非常に強力なパフォーマンスとスケールを持っているためです。 MongoDB.org Webサイトには、これらの属性を示すケーススタディがあります。
各データベースには独自の目的とユースケースがあるという考えに同意します。それに応じて、各データベースの目的を評価に使用します。
Rick Cattellによるその他のデータストア(別名NoSQL)、その違い、およびいくつかのユースケースについてのこの記事をお勧めします。 http://www.cattell.net/datastores/index.html
NoSQLの好きなところは、パフォーマンスとユーザビリティとは関係ありません。ドキュメントストアは、アトミックデータユニットがドキュメントのようである場合、オブジェクトとの間でシリアル化するのが簡単なため、操作が簡単です。それはただもっと楽しく、それは個人的なプロジェクトやサイドプロジェクトにとって重要な要素です。
私はしばらくの間NoSQL DBを使用していましたが、これがトピックへの貢献です。
NoSQLデータベースのgreatユースケースは、statisticsおよび/またはreports generationのアプリケーションです。特にデータがある場合サードパーティのソースから提供されます。
そのような状況では、NoSQLデータベースはgreat choiceになります
たとえば、MongoDBを考えてみましょう。
JSONでデータを取得したら(サードパーティのAPIから取得するか、sqlアプリケーションからエクスポートすることができます)MongoDB is prettystrightforward to import and updateJSONdataデータベース内;たとえば、コマンドライン mongoimport
ユーティリティを使用して
この時点で、非常に動的クエリを構築するのは簡単ですフィルタリングとグループ化は、この種のアプリケーションに適しています。
たとえば、 Aggregation Framework :
$pipeline = [];
//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ] ] ];
//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
$pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];
//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
return $collection->aggretate( $pipeline );
easinessをポイントして、通常はフィルターを追加/削除できるphpデータ構造を使用し、面倒な文字列の連結を避けてクエリを作成したい。このアプローチでは、配列に要素を追加/削除するのと同じくらい簡単に、フィルタを動的に追加/削除できます。
もう1つの大きな利点は、このようなソリューションがrelational databaseを使用するよりもfasterになる可能性が高いことです。必要なすべてのデータを取得するには
さらに、NoSQLデータベースのすべての主要な制限を回避するため、このユースケースが最適です。
トランザクションの不足:アプリケーションは書き込みを実行せず、読み取りのみを実行するため、トランザクションはまったく必要ありません。
テーブル間の結合の欠如:redundancyを使用してdenormalized dataを保存できるため、結合は不要です。コレクション。データを読み取るだけなので、更新間で非正規化データを同期することを心配する必要はありません。
このようにして、dataの保存に焦点を当てることができます。方法で冗長性を確保し、クエリに適しています。これは単一のコレクションに焦点を当てます。
私がこれを書いているのは、何年か前にそのようなものを読んでいたら、研究をする時間を節約できたからです。
それが誰かに役立つことを願っています
Martin Fowlerによるこの講演を強くお勧めします。
https://www.youtube.com/watch?v=qI_g07C_Q5I
ABSTRACT:Martinは、NoSQLデータベースの概要を説明します。NoSQLデータベースの由来、使用するデータモデルの性質、一貫性について考える必要がある別の方法。これから、彼はあなたがそれらを使用することを考慮すべき状況の種類、それらがリレーショナルデータベースを時代遅れにしない理由、およびポリグロット永続性の重要な結果を概説します。
NoSQLが何であるか、さまざまなカテゴリ、およびリレーショナルデータベースの世界から来たときに誰もが理解しなければならないことの素敵な絵を描きます。よろしく。
最初に、CAP(一貫性、可用性、パーティション分割、3つのうち2つを選択する必要がある)理論とビジネスユースケースを理解する必要があります。 MongoDBは一貫性を満たし、パーティショニングとCouch DBは可用性とパーティショニングを満たします。
NoSQLに関するYouTubeのEdurekaビデオは、最高のビデオチュートリアルの一部です。
https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo
Slideshare.netで優れたプレゼンテーションを利用できます
http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search= (このプレゼンテーションはビデオチュートリアルをサポートしていますyoutubeで)
市場にはこれまで以上に多くのNoSQLデータベースが存在するため、サポート、拡張性、管理に基づいたエンタープライズアプリケーションにも最適なデータベースを探している場合は、Gartner Magic Quadrantをご覧になることをお勧めします。コスト。
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
まだ試していない人にはCouchbaseをお勧めしますが、レポートに示されているバージョン(2.5.1)には基づいていません。これは、CBサーバーが今日の2リビジョン近くであり、2H15の4.0のリリースに近いためです。
http://www.couchbase.com/coming-in-couchbase-server-4-
ベンダー/製品としてのCouchbaseのもう1つの部分は、CouchbaseがマルチユースタイプのDBであることです。純粋なK/Vストア、多次元スケーリングを備えたドキュメント指向データベース、Memcached、永続性を備えたキャッシュアサイドとして機能し、自動結合を備えたANSI 92準拠のSQL、ボタンを押すだけでDRクラスターに複製をサポートします。エコシステムに組み込まれたモバイルコンポーネントもあります。
それ以外の場合は、最新のベンチマークを確認する価値があります。
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.htmlhttp://info.couchbase.com/NoSQL-Technical-Comparison-Report.html
必要ないくつかのユースケース、特に分析クエリでは、Postgresから this wrapper を使用してMongoDBでSQLクエリを実行できます。