最近、NoSQLが業界で大きな注目を集めています。リレーショナルデータベースストレージでの使用について、人々の考えが最良のユースケースについて本当に興味を持っています。特定のデータセットがNoSQLソリューションにより適していると開発者が考えるきっかけとなるもの。PHPの開発に関して最もカバーしているように見えるMongoDBとCouchDBに特に興味があります。それが私の焦点です。
最近、NoSQLが業界で大きな注目を集めています。リレーショナルデータベースストレージでの使用について、人々の考えが最良のユースケースについて本当に興味を持っています。特定のデータセットがNoSQLソリューションにより適していると開発者が考えるきっかけとなるもの。PHPの開発に関して最もカバーしているように見えるMongoDBとCouchDBに特に興味があります。それが私の焦点です。
回答:
リレーショナルデータモデルをMongoDBやCouchDBなどのNoSQLデータベースにマッピングしようとしないことを約束してください...これは、開発者が新興のテクノロジーを評価するときに犯す最も一般的な間違いです。
そのアプローチは、車を取り上げ、それを使用してカートを馬のように道から降ろそうとするのに似ています。
もちろん、全員の経験による自然な反応ですが、ドキュメントデータベースを使用することの真の価値は、データモデルを簡素化し、開発者としての苦痛を最小限に抑えることです。コードベースが縮小し、バグが少なくて見つけやすくなり、パフォーマンスは素晴らしいものになり、スケールははるかに単純になります。
Joomlaの創設者として私は偏見があります:-)が、CMSスペースから来たものですが、MongoDBのようなものはコンテンツが非常に自然にドキュメントシステムにマッピングされるため、特効薬です。
MongoDBのもう1つの優れたケースは、リアルタイム分析です。MongoDBは、特に並行性に関して非常に強力なパフォーマンスとスケーリングを備えています。MongoDB.org Webサイトには、これらの属性を実証するケーススタディがあります。
各データベースには独自の目的と使用例があるという考えに同意します。それに応じて評価するために各データベースの目的を取ります。
とにかくMongoDBのいくつかの優れたユースケースがMongoDBサイトで言及されています。示されている例は、リアルタイム分析、ロギング、および全文検索です。これらの記事はすべて読む価値がありますhttp://www.mongodb.com/use-cases
NoSQLデータベースがどのタイプのプロジェクトに最も適しているかについての優れた記事もあります:http : //kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
その他のデータストア(別名NoSQL)、それらの違い、およびいくつかのユースケースについて、Rick Cattellによるこの記事をお勧めします。http://www.cattell.net/datastores/index.html
NoSQLの好きなところは、パフォーマンスとは関係がなく、ユーザビリティとはすべて関係があります。オブジェクトへのシリアル化とオブジェクトからのシリアル化が簡単であるため、アトミックデータユニットがドキュメントのような場合は、ドキュメントストアを使用する方が簡単です。それはもっと楽しいだけでなく、個人的なプロジェクトやサイドプロジェクトにとって重要な要素です。
私はしばらくの間NoSQL DBを使用していますが、これは私のトピックへの貢献です:
偉大なユースケースのNoSQLデータベースのためには、ためのアプリケーションです統計および/またはレポート作成データは、サードパーティのソースから提供されるexpecially、。
そのような状況では、NoSQLデータベースが最適な選択肢になる可能性があります
たとえば、MongoDBについて考えてみましょう。
JSONでデータを取得したら(サードパーティのAPIから取得したり、sql-applicationからエクスポートしたりできます)、MongoDBでデータベースにJSON データをインポートして更新するのは非常に簡単です。たとえば、コマンドラインユーティリティを使用する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 );
私は、phpデータ構造を使用してフィルターを動的に追加/削除し、クエリを構築するための面倒な文字列連結を回避できる簡単さを指摘したいと思います。このアプローチを使用すると、フィルターを追加/削除することは、配列に要素を追加/削除するのと同じくらい簡単です
別の大きな利点は、このようなソリューションは、必要なすべてのデータを取得するためにさまざまなテーブルと結合する必要があるリレーショナルデータベースを使用するよりも高速である可能性が高いという事実から得られます
さらに、NoSQLデータベースのすべての主要な制限を回避するため、この使用例は最適です。
トランザクションの欠如:アプリケーションは書き込みを実行せず、読み取りのみを実行するため、トランザクションはまったく必要ありません。
テーブル間の結合の欠如:非正規化データをコレクションに格納するために冗長性を使用できるため、結合は必要ありません。データを読み取るだけなので、非正規化データを更新間で同期することについて心配する必要はありません。
このようにして、単一のコレクションに重点を置くクエリに適切に適合する方法で、冗長性のあるデータの格納に重点を置くことができます。
私がこれを書いているのは、そのようなものを以前に読んだことがあれば、研究をする時間を節約できたからです。
それが誰かに役立つことを願っています
Martin Fowlerによるこの講演を強くお勧めします。
https://www.youtube.com/watch?v=qI_g07C_Q5I
要約: マーティンは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=3(このプレゼンテーションは、youtubeのビデオチュートリアルをサポートしています)
現在、市場にはこれまでよりも多くのNoSQLデータベースが存在するため、サポート、拡張性、管理に基づくエンタープライズアプリケーションにも最適なデータベースをお探しの場合は、ガートナーマジッククアドラントをご覧になることをお勧めします。費用。
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
Couchbaseをまだ試していない人に提案したいと思いますが、レポートに示されているバージョン(2.5.1)に基づいていません。これは、CB Serverが今日のところ2リビジョン近く遅れており、2H15のリリース4.0に近づいているためです。 。
http://www.couchbase.com/coming-in-couchbase-server-4-0
ベンダー/製品としてのCouchbaseのもう1つの部分は、それが多目的タイプのDBであることです。純粋なK / Vストア、多次元スケーリングを備えたドキュメント指向データベース、Memcached、永続性を備えたキャッシュアサイドとして機能し、自動結合を備えたANSI 92準拠のSQL、ボタンを押すことによるDRクラスターへのレプリケーション、およびエコシステムに組み込まれたモバイルコンポーネントさえあります。
他に何もない場合は、最新のベンチマークをチェックする価値があります。
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html