1

私は現在、大企業向けに PHP/MySQL を使用して e コマース ソフトウェアを開発しています。特定のデータを取得するには、次の 2 つのオプションがあります。

  • DB (PRODUCTS、CATEGORIES、ORDERSなどの膨大なデータを取得するため)
  • TXT (YAML を使用 - 分析データといくつかのオプションを取得するため)

たとえば、ユーザーが製品の詳細ページに移動すると、これらの TXT ファイルを取得する必要があります。

  • 商品概要ファイル (product_hit、quantity_sold など) 90KB
  • 言語と設定ファイル (company_name、テンプレートの翻訳など) - およそ最大。300KB
  • もう1つのファイルかもしれません(よくわかりません)-100KBと仮定します。

データは人間が簡単に読み取ることができ、プログラミング言語間で移植できるため、この方法を使用したいと考えています。さらに、DB を使用する場合、いくつかのテーブルを接続する必要があります。しかし、これらのファイルはそれらをまとめます。

私のtxtファイルは(YAML)のようになります:

 product_id: 1281
 quantity_sold: 12 #item(s)
 hit: 1105
 hit_avarage: 92 #quantity_sold/hit
 vote: 2
 ...

しかし、まだ速度とパフォーマンスについてはわかりません。TXT ファイルを使用するのは良い考えですか? DBの代わりにこの方法を本当に使用する必要がありますか?

4

4 に答える 4

2

YAML ファイルを部分的にインクルードして解析することはできないため、ファイル全体を解析する必要があります。これは、信じられないほどのパフォーマンス ヒットが発生することを意味します。これは、単に WHERE 条件を入力する代わりに、データベースからすべての行を選択し、それらをループして探している行を見つけることと比較できます。そうです、データベースは、あなたが求めていることを達成するのにはるかに高速です.

ドキュメント ベースのデータベースをご覧ください。必ずしもリレーショナル データベースを使用する必要はありません。実際、YAML ファイルの例を見ると、" no SQL " データベースを使用する方がより良い代替手段になると思います。

乾杯。

于 2011-02-03T15:46:36.020 に答える
1

私はYAMLが大好きで、少量のデータには最適だと思いますが、あなたが言及した次元はデータベースを使用する方が適切です。より高速で、データのインデックスを作成できます。ファイル ベースのシナリオでは、ファイル全体を調べて何かを見つける必要があります。

于 2011-02-03T15:42:16.777 に答える
1

YAML アプローチを使用します。データ構造は、それらが固定データ/構成設定に等しいことを示唆しています。また、データベース内で計算を合理的に実行できない場合は、実行しないでください。

ただし、固定データを YAML から CSV に変換し、それらをデータベース内の一時テーブルにインポートすることはできます。すべてを計算できる場合にのみ実行可能です。

性能に関してはなんとも言えません。技術的には、ファイル データの読み取りは、データベースがディスク セクターを読み取るのと同じくらい遅く、YAML 解析と列分割の違いはそれほど大きくない可能性があります。それをテストする必要があります。

于 2011-02-03T15:44:58.747 に答える
1

YAML は「人間が読めるデータのシリアル化形式」です。

シリアライゼーションとは、メモリ内構造を、メモリ内構造への書き込み、場合によっては送信、および読み取りが可能な形式に変換するプロセスです。

データベース管理システムは、作成から処理までのデータ管理を制御するのに役立つプログラムです。

  • 安全
  • スケーラビリティ
  • 同時性
  • データの整合性 (原子性、一貫性、分離性、耐久性)
  • パフォーマンス
  • 可用性

YAML は、上記を処理するツールと統合環境を提供しませ。YAML をプリンシパル データ ストアとして使用する場合は、YAML をプリンシパル データ管理システムとして使用するこの特定のシナリオから、上記のすべての課題を分離する必要があります。 (または、遅かれ早かれ、車輪をある程度再発明します)。

「大企業向けの電子商取引システム」は、人間が読みやすくするために上記の機能のいずれかを犠牲にしたいとは思わないでしょう。

于 2011-02-03T16:48:13.297 に答える