0

「国、各国に関連する都市、山など」などの静的データを使用したウェブサイトを構築しています。

私の友人は、CSVファイルに保存してjavascriptを使用してインポートする方が速いと提案しています。彼は、mysqlからそれらを取得するよりも速いと言います。

私はmysqlを使い続けて、すべてを1か所にまとめたいと考えています。0.00001秒が本当に重要だとは思いません。

手伝ってもらえますか?いつmysqlを使用し、いつcsvを使用する必要がありますか?

  • 静的データについて話しています。今後は変更しません
  • 私たちが構築しているウェブサイトはphp、angularjsです
4

6 に答える 6

3

何をすべきかを決定するための最良の基準は、より速いことではないかもしれません。

あなたの友人には、どちらの推奨事項も支持または反論するデータがないに違いありません。

データベースへの呼び出しと同じように、JavaScript のインポートはネットワーク ホップではありませんか?

私は妥協します: MySQL に入れ、起動時にメモリにロードし、中間層にキャッシュします。中間層からブラウザーにデータを取得するためのネットワーク ホップに対してのみ料金が発生し、データは実際のデータベースに保存されます。

中間層がない場合は、運が悪いです。

すべてのユーザーがそのテーブルのすべての値を必要としますか、それともいくつかの値だけが必要ですか? すべてのユーザーに大量のダウンロードを受け入れるように強制するのはなぜですか?

于 2012-09-18T16:55:41.383 に答える
2

一般に、予測可能な場所にある予測可能なファイルは、DB ルックアップよりもはるかに高速です。DB は検索/検索、ディスクからのプル、配信です。ファイルは必要な場所にあり、検索は必要ありません。

多くのキャッシュ技術は、管理目的でコンテンツを DB に保存しますが、エントリのコンテンツは、必要に応じてすばやく検索できるようにファイルにも書き込まれます。

両方のハイブリッドを検討することをお勧めします。DB 管理、およびファイル キャッシング。両方の世界を最大限に活用し、州のリスト管理を超えて後で使用するためのプラットフォームを構築します。

キャッシングの手法やアプローチは数多くあります。たとえば、オンデマンド キャッシングを展開します。ファイルが予期した場所にない場合は、DB から動的にオンデマンドで書き込まれるファイルにキャッシュします。DB エントリが更新されたら、キャッシュされたファイルを削除します。その後、オンデマンドで要求されると、ファイルが書き込まれます。

于 2012-09-18T17:11:34.900 に答える
1

この種の静的データの場合、MySQLを使用するための唯一の本当の動機は(私が考えることができる)データベースの検証です。特に変更する予定がない場合は、CSVを使用することをお勧めします。

于 2012-09-18T16:49:36.683 に答える
0

CSV からデータを取得する方が高速かもしれませんが、参照整合性は得られません。みたいなこと言ってたら

users ( 
    country_id,
    locale_id, ...
)

必要に応じて、そのデータをCSVにキャッシュできますが、DBに複製して、参照整合性を確保できます。そうすれば、その国に関する情報を含むすべてのフィールドのデータをクエリすると、それに参加するためのレコードが返されます。そうすれば、参照整合性を失うことなく、キャッシュしてより高速なデータ ストアから取得できるという利点が得られます。

于 2012-09-18T17:19:42.433 に答える
0

私の意見では、MySQL を使用して国を保存することは良い考えです。これにより、外部キーを通じてデータの一貫性を確保できるからです。

このような場合、処理するデータが少ない (数百行) ため、速度はあまり重要ではありません。

このようなデータをデータベースの外部に保存すると、アプリケーションの複雑さが大幅に増加する可能性があることに注意してください。

お役に立てれば ;-)

于 2012-09-18T17:20:02.263 に答える
-1

多分SQLiteを使用しますか?CSVとMySQLの両方の利点があります

于 2012-09-18T17:17:24.270 に答える