NoSQLの使用例[終了]


144

最近、NoSQLが業界で大きな注目を集めています。リレーショナルデータベースストレージでの使用について、人々の考えが最良のユースケースについて本当に興味を持っています。特定のデータセットがNoSQLソリューションにより適していると開発者が考えるきっかけとなるもの。PHPの開発に関して最もカバーしているように見えるMongoDBCouchDBに特に興味があります。それが私の焦点です。


6
CassandraとMongoDBは完全に異なる製品であり、完全に異なるカテゴリーです。この質問は、特定のタイプのデータベース(OODB、DODB、DKVSなど)のユースケースについて尋ねる場合に答えるのが簡単です。「NoSQL」は、「SQL以外のもの」の単なる包括的な用語です。同様に、BerkleyDBのようなものや、ネットワーク共有上にある一連のフラットファイルでもかまいません。
アーロンノート

@Aaronaught違いに感謝します。おそらくnosqlで包括的な用語を使用したことで罪があると思います
robjmills

回答:


86

リレーショナルデータモデルをMongoDBやCouchDBなどのNoSQLデータベースにマッピングしようとしないことを約束してください...これは、開発者が新興のテクノロジーを評価するときに犯す最も一般的な間違いです。

そのアプローチは、車を取り上げ、それを使用してカートを馬のように道から降ろそうとするのに似ています。

もちろん、全員の経験による自然な反応ですが、ドキュメントデータベースを使用することの真の価値は、データモデルを簡素化し、開発者としての苦痛を最小限に抑えることです。コードベースが縮小し、バグが少なくて見つけやすくなり、パフォーマンスは素晴らしいものになり、スケールははるかに単純になります。

Joomlaの創設者として私は偏見があります:-)が、CMSスペースから来たものですが、MongoDBのようなものはコンテンツが非常に自然にドキュメントシステムにマッピングされるため、特効薬です。

MongoDBのもう1つの優れたケースは、リアルタイム分析です。MongoDBは、特に並行性に関して非常に強力なパフォーマンスとスケーリングを備えています。MongoDB.org Webサイトには、これらの属性を実証するケーススタディがあります。

各データベースには独自の目的と使用例があるという考えに同意します。それに応じて評価するために各データベースの目的を取ります。


1
本当によく言われたspacemonkey、私はseengeeと同じ立場にいます、明らかに私たちは新しい方法で考えるべきであり、アプリケーションデータをどのようにドキュメント構造に構造化し、RDBMSの考え方から自分自身を取り除くのかを自問する必要がありますこの分析
on_

49

とにかくMongoDBのいくつかの優れたユースケースがMongoDBサイトで言及されています。示されている例は、リアルタイム分析、ロギング、および全文検索です。これらの記事はすべて読む価値がありますhttp://www.mongodb.com/use-cases

NoSQLデータベースがどのタイプのプロジェクトに最も適しているかについての優れた記事もあります:http : //kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis



8

NoSQLの好きなところは、パフォーマンスとは関係がなく、ユーザビリティとはすべて関係があります。オブジェクトへのシリアル化とオブジェクトからのシリアル化が簡単であるため、アトミックデータユニットがドキュメントのような場合は、ドキュメントストアを使用する方が簡単です。それはもっと楽しいだけでなく、個人的なプロジェクトやサイドプロジェクトにとって重要な要素です。


1
些細なことだとは言えませんが、それ以外の点では、ドキュメント指向データベースの良い点です。他の一部のNoSQL製品では実際にはその逆が当てはまります。DKVSは、SQL /リレーショナルDBよりもマッピングが難しい傾向があります。
アーロノート

8

私はしばらくの間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データベースのすべての主要な制限回避するため、この使用例は最適です。

  • トランザクションの欠如:アプリケーションは書き込みを実行せず、読み取りのみを実行するため、トランザクションはまったく必要ありません。

  • テーブル間の結合の欠如:非正規化データをコレクションに格納するために冗長性を使用できるため、結合は必要ありません。データを読み取るだけなので、非正規化データを更新間で同期することについて心配する必要はありません。

このようにして、単一のコレクションに重点を置くクエリに適切に適合する方法で、冗長性のあるデータの格納に重点を置くことができます。

私がこれを書いているのは、そのようなものを以前に読んだことがあれば、研究をする時間を節約できたからです。

それが誰かに役立つことを願っています


3

Martin Fowlerによるこの講演を強くお勧めします。

https://www.youtube.com/watch?v=qI_g07C_Q5I

要約: マーティンはNoSQLデータベースをすばやく紹介します。データベースの出所、データベースが使用するデータモデルの性質、一貫性について異なる考え方をする必要があります。このことから、それらの使用を検討する必要がある状況の種類、それらがリレーショナルデータベースを時代遅れにしない理由、およびポリグロットの永続化の重要な結果について概説します。

これは、NoSQLとは何か、さまざまなカテゴリ、およびリレーショナルデータベースの世界から来たときに誰もが理解しなければならないことをよく表しています。よろしく。


理解しました、将来のためにそれを心に留めておいてください。
user3631881 2015

3

最初に、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/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3(このプレゼンテーションは、youtubeのビデオチュートリアルをサポートしています)



1

現在、市場にはこれまでよりも多くの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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.