概要
一部のタグは事前定義され、一部はユーザーが定義することiOS
で人々が検索できるアプリがあります。tags
tags
ユーザーが検索したいことを書くと、それらで利用可能な結果の数を示す行を表示したいと思いますtags
(検索画像の例を参照)。
注: #Exercise
or #Routine
are parenttag
は、その人が常にそれらのいずれかを最初に使用することを意味します。
私はサーバー側を使用PHP
しています。MongoDB
私は、すべてのクライアントがそれを取得してリソース消費を最小限に抑えることができるように、1 時間ごとにタグ数を含むファイルを作成することを考えました。
操作された情報がtags
ユーザーによって制御されることを考えると、リストは時間の経過とともに大幅に拡大します。
チャレンジ
- そのようなリストを作成、操作、および保存するためのパフォーマンスとオーバーヘッドを考慮すると、何が最善のアプローチであるかに戸惑っています。
私の最初のアイデア2d array
は、すべての値を保存する (写真を参照)を作成することでした。これは、MongoDB に格納できるように JSON に変換されます。
しかし、このアプローチでは、すべてのタグを取得してメモリにロードし、+1 または -1 を実行する必要があります。したがって、私はそれが最善かもしれないとは思わない。
すべての操作は、各要素の挿入、更新、および削除で行われます。したがって、かなりのRAM
オーバーヘッドが発生します。
私の 2 番目のアイデアdocument
は、使用済みのものをすべて保存する場所を作成し、tags
1 時間ごとにカウント クエリを実行して、クライアントが使用するリストを生成することでした。
これは、削除、更新、および挿入のたびに、タグがこれdocument
に存在することを確認し、条件に応じて作成または削除するか、何もしないことを意味します。
1 時間ごとにすべてのタグを取得し、すべてのタグの組み合わせを含む配列を生成します。すべてのタグの組み合わせに対して DB をクエリし、返された結果の数をカウントしてファイルを作成します。
MongoDB
このアプローチは、私が使用していて使用していないことを考えると、より良いものになる可能性があると思いますMySQL
。しかし、私はまだそのパフォーマンスについて確信が持てません。
誰かが同様のシステムを作成し、より良いアプローチについてアドバイスできますか?
例 検索の画像
2次元配列