5

大規模な多次元配列を使用するか、MySQL でデータベースを使用するかを頭の中で議論しています。私は、ビジネスに多くの製品があるクライアントのために開発しています。この多次元配列には、個々の製品のタイトル、説明、画像リンク、およびカテゴリを含めます。

私のクライアントは、おそらく 1000 以上の製品を持っています。私は他の同様の質問を調査しましたが、それらの多くは配列の方がおそらく高速であると言っていますが、この規模の配列を扱っているものはありません。

個人的には、MySQL に関する知識が非常に限られているため、むしろ配列を使用したいと考えていますが、速度が大幅に犠牲になる場合は、むしろデータベースを使用します。私の場合、どちらがより適切なオプションだと思いますか?

4

4 に答える 4

8

他の答えは正しいですが、理由は間違っています。

PHP 配列にデータを保持すると、データセットがメモリにキャッシュされている場合でも、データベースからフェッチするよりもはるかに高速になります。問題は、通常の PHP アーキテクチャでは、各リクエストが個別のプロセスによって処理されることです。したがって、データへのアクセスが必要な各リクエストは、データセット全体をメモリにロードする必要があります。これには時間がかかります。データベースからアイテムを取得するのではなく、この操作を実行する方がコストが高くなるポイントは、さまざまな要因によって異なりますが、大まかな目安としては、100 レコード程度です。このモデルが理にかなっているアプリケーションがありますが、それらは非常に少量のデータ量と、データの変更/管理の制御されたプロセスに依存しています。

次に問題になるのは、株式に対するいくつかのトランザクションを記録することです。これは、データの変更を意味します。つまり、アクセスをシリアル化して、2 つの別々のトランザクションが同時に発生しないようにすることです。これを PHP で実装することは (判断するための専用デーモンなしで) 不可能ですが、デッドロックは発生しません。

コードを実装するために誰かに課金している場合、これをメモリに実装しようとするのは非常に悪い考えであることは、盲目的に明らかです。

于 2013-09-09T20:47:03.217 に答える
6

私の正直な意見では、データベースを使用します。これが私の推論です。

データベースを使用すると、接続時間、通信時間、クエリ時間などのパフォーマンスがわずかに低下します。ただし、利益はいくつかの側面から得られます。

  1. はるかに優れた、より簡単な操作。
  2. 安定性、セキュリティ、およびクラウド機能。
  3. 巨大な配列を扱うことは、後部の大きな苦痛になるからです。

また、肉眼でデータベースを使用すると、データの表示がはるかに簡単になります。

お役に立てれば!

于 2013-09-09T20:21:28.987 に答える
2

メモリ消費について少し話しましょう。

PHP の 1 つの配列要素は、144 バイトのデータを消費しますが、文字列テキストはカウントされません (これは余計です)。

1000 個の要素を持つ配列は、144.000 バイトとテキスト文字列を使用します。これは実際には多くないようです。

しかし、1 つの値だけで有用なデータ構造を作成することはできないため、1000 個の要素はおそらくサブ要素を持つ配列になります。配列ごとに 10 要素だけと仮定しましょう。これは、各要素の配列の 1440 バイトに 1000 要素を掛けたものになります。1.440.000 バイトに近づいているわけではありません。まだ「何もない」ようですが、テキストはどうですか?さらに複雑なサブ構造はどうでしょうか。結局どれくらいの大きさになるの?

さらに、その配列は、すべての同時要求に対してメモリ内に存在する必要があります。そして、何らかの方法でロードする必要があります。配列のシリアル化を解除すると、かなりの量の CPU パワーが必要になります。

最後に:データベースを使用してください!すべてのデータをメモリにプッシュする利点はありません。

于 2013-09-09T20:36:01.893 に答える
2

配列を使用するコードはより単純になり、MySQL データベースの複雑さはありません。そのデータが staticであり、そのデータの他の用途やユーザーがいない場合、配列は問題ありません。

一方、そのデータを変更する必要がある場合、またはそのデータが他のビジネス機能に役立つ場合は、MySQL データベースが最適です。

于 2013-09-09T20:20:04.537 に答える