8

車を売りに出すための Web アプリを運営している仲間がいます。それを使用する数千のクライアントがあり、各クライアントのデータベースには数百、場合によっては数千の行があります (毎月数百台の車が販売され、販売ごとに数十行 (コメント、メッセージ、等))。彼はこのシステムを 1 台の SQL Server データベースで 1 台の物理サーバーで実行し、20 GB または RAM と数個のプロセッサを搭載し、問題なく実行しました。これはある種の奇跡ですか?

ほとんどのプログラマーと同じように、私は DBA ではなく、ORM などのおかげで何とかやってのけています。どこを見ても、Web アプリの大規模なユーザーのために、シャード化または別のデータベース サーバーを取得する必要があるという話があります。どうしてこれなの?大量または行を含む大規模な DB を持つことは、本当に効率が悪いのでしょうか? Cassandra か何かを使用する予定ですか、それとも Postgres で適切にスケールアップすることに頼ることができますか?

4

6 に答える 6

9

個人的には、あなたが説明したことはそれほど大きなデータベースではないと思います。サーバー (20 ギガの RAM? ;)) はまともに聞こえます。それは使用法とデザインに関するものです。データベースがインデックス化され、適切に設計されている場合、現在のハードウェアでは非常に大きくなる可能性があります。

なんらかの切り替えを行う前に、パフォーマンスの問題が懸念される場合は、役に立たないデータをアーカイブし、クエリを最適化することを検討します。

于 2010-09-10T22:39:18.690 に答える
6

シャーディングと個別のデータベースサーバーの理由は、ある時点で、1台の高価なマシンよりも複数の安価なマシンを使用する方が安くなるためです。ハードウェアの価格はパフォーマンスに比例しません。特定のポイントに達すると、2倍の速度のマシンを入手するよりも2倍の数のマシンを入手する方がはるかに安くなります。

于 2010-09-10T22:46:44.280 に答える
3

通常、コンポーネントを異なるサーバーに分割して、時間、回復力、およびパフォーマンスをより簡単に管理できるようにします。

すべてを実行するモンスターマシンを1台持つことは確かに可能ですが、マザーボードが故障したり、データセンターが利用できなくなったりした場合に備えて、別のモンスターマシンが必要になる場合があります。

Webサイトまたはアプリケーションを分割することにより、さまざまなサーバー間で、より安価なマシンを簡単に入手できます。したがって、復元力を組み込むことができ、ハードウェアの衝突に対して同様の要求があるコンポーネントを使用する必要はありません。

サーバーの復元時間と復旧計画について考えることも重要です。
マシンが停止するとどうなりますか?合意された時間内にマシンを交換できますか?その間にバックアップから復元できますか?

SQL Serverまたはその他のエンタープライズクラスのデータベースは、設計が不十分でない限り、10GBまたは100GBのデータベースで問題が発生することはありません。(その容量/使用量でまったく苦労していないマシンがいくつかあります。)

于 2010-09-10T23:10:19.897 に答える
3

SQL サーバー、Oracle、または最新のリレーショナル データベースや非リレーショナル データベースでは問題ありません。私は、数億のレコードとテラバイトのデータを含むデータベースを管理してきました。

于 2010-09-10T22:36:38.757 に答える
2

データベースは、リレーショナルデータ(つまり、構造化され、他のデータへの参照を持つデータ)の保存と取得に非常に効率的です。これは、データベースが実行するように設計されていることです。正直なところ、99%の人々が、Key-ValueストアとCassandraについて吐き出し、何をしているのか見当がつかないのです。データベースサーバーは、特にデータを適切に調整するために少しの作業を行う場合は特に、大量のデータを格納するのに適しています。

そうは言っても、Cassandraet。のユースケースがあります。al。-ほとんど構造化されていないキー/値データがある場合、一貫性が必要ない場合、または冗長性のためにシャーディングしたい場合は、調査する価値があるかもしれません。

あなたが非常に人気のあるウェブサイトでない限り、あなたはおそらくまともなデータベースサーバーでうまくやっていくことができます-あなたが切り替える必要がある理由を決定するまで切り替えないでください。切り替えは問題ありません。「Webスケールで行うべきクールなこと」ではなく、ニーズに適しているため、切り替えを行っていることを確認してください。

于 2010-09-10T22:43:21.313 に答える
2

私の考えでは、それは何もありません。データベース サイズが 10 GB を超える複数のテーブルに数千万の行が存在しても、MS SQL Server では問題が発生しませんでした。もちろん、それほど多くのデータでは速すぎませんが、それ以外は問題なく動作します。

質問に答えると、大きすぎると問題が発生します。また、いつ問題が発生し始めるかは、テーブル構造とパフォーマンスの要求によって異なります。

于 2010-09-10T22:38:17.507 に答える