リレーショナルDBMSのデータが大きくなっています。NoSQLに移行する時ですか?


17

eラーニングを目的としたソーシャルネットワークアプリケーションを作成しました。これは実験室で研究している実験プロジェクトです。しばらくの間、いくつかのケーススタディで使用されており、リレーショナルDBMS(SQL Server 2008)のデータは大きくなっています。現在は数ギガバイトであり、テーブルは相互に高度に接続されています。パフォーマンスは依然として良好ですが、いつ他のオプションを検討する必要がありますか?パフォーマンスの問題ですか?


3
ソーシャルネットワーキングには、Neo4jOrientDBのようなグラフデータベースを強くお勧めします
アポロ

回答:


14

数ギガバイト非常に「ではありませんビッグ」。これは、エンタープライズDBの通常のサイズに似ています。テーブルに参加するときにPKを超える限り、将来的にも非常にうまく機能するはずです(1日にTBのデータを取得しない限り)。

ビッグデータ環境で働くほとんどの専門家は、ビッグデータという用語の始まりとして5TB以上を検討しています。しかし、それでも、次善のnosqlデータベースをインストールするのが常に最善の方法とは限りません。問題に最適なツールを見つけるために、データ(集計、読み取り、検索、鉱山など)でアーカイブするタスクを常に考える必要があります。

つまり、データベースで多くの検索を行う場合は、solrインスタンス/クラスターを実行し、PostgresやSQL ServerなどのDBMSからデータを非正規化し、データを単に移動するのではなくsolrに入れる方がよいでしょう。永続性とパフォーマンスの観点から、sqlからnosqlへ。


10

この質問に答えるには、どのような妥協を許すかを答えなければなりません。RDBMはACIDを実装します。これはリソースの点で高価です。ACIDであるNoSQLソリューションはありません。これらのアイデアの詳細については、CAP定理をご覧ください。

そのため、各ソリューションによって与えられる各妥協点を理解し、問題に最も適切なものを選択する必要があります。


8

ビッグデータは、実際には「どれだけ大きいか」についてはそうではありません。

まず、数ギガバイトはまったく大きくなく、ほとんど何もありません。だから気にしないでください、あなたのシステムは、私が思うにしばらくの間、効率的に動作し続けるでしょう。

次に、データをどのように使用するかを考える必要があります。

  • SQLアプローチ:すべてのデータは貴重であり、十分に収集され、選択されます。また、重要性が高く、適切に構造化されたデータの保存に重点が置かれます。これにはコストがかかり、すべてが相互リンクであり、十分に構成されたシステムおよび機能データに適しています。
  • ビッグデータアプローチ:ビッグデータでは、価値に関係なく、基本的にほとんどすべてを保存してから、アクティブな分析プロセスを実行します。物事はリンクされておらず、コピーされます。たとえば、ブログエントリがあるとします。ビッグデータでは、作成者へのリンクはありませんが、作成者はブログエントリ内に埋め込まれます。よりスケーラブルになりますが、別のより複雑なアプローチが必要です。

格納されている「機能」データがアプリケーションで使用される場合、SQLのままにしておくことをお勧めします。後で検索したりレポートを作成するためにデータを保存する場合、およびこのデータ量が急速に増加する可能性がある場合は、ビッグデータを提案します。私の意見では、継続的に収集および分析する必要がある実際のデータを扱う場合、ビッグデータは有用です。


8

ここで、リレーショナルvsドキュメント(またはNoSQL)データベースを使用するのが適切な場合について、stackoverflowに関する非常に詳細な回答を投稿しました。

リレーショナルデータベース/ ORMまたはドキュメントデータベース/ ODMを使用する動機

概要:

  • 小さなものについては、使い慣れたツールを使用してください

  • 数ギガバイトは間違いなく小さなものです:妥当な数のノード(16-32)を持つ単一のMySQL Clusterに収まるには大きすぎるまで大きくなりません。つまり、おそらく8-16TBデータと数百万トランザクション1秒あたり(または最大100のTBデータと1秒あたり数千のトランザクションを含む、より一般的なハードドライブベースのデータベース)。

  • 別のデータベース(MySQL Clusterではない)で立ち往生している場合は、FusionIOハードウェアを投入することで、さらに多くのデータベースを活用できます。

  • データが数TB 超え、1秒あたり数千のトランザクションよりも速い場合は、まずアプリケーションコードで論理シャーディングに移行し、次にNoSQLに移行することを検討してください。

  • カサンドラ :)


6

NoSQLに移行する時間は2つのことによって決まりますか?

  1. データの性質/構造
  2. 現在のパフォーマンス

SQLデータベースは、データが適切に構造化されている場合に優れています(たとえば、テーブル、Excelスプレッドシート、または列数が固定された行のセットとしてモデル化できる場合)。また、多くのテーブル結合を行う必要がある場合にも適しています(これはあなたのように聞こえます)。

NoSQLデータベースは、データがキーと値のペアを超えて非構造化されている場合に優れています。

パフォーマンスに関しては、 1つの質問をする必要があります。現在のSQLソリューションは遅いですか?

そうでない場合は、「IIABDFI」の原則に従ってください

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