2016-12-30 1 views
0

ウェブサイト用の新しいAPIとデータベース、学校用モバイルアプリケーションを構築しています。このアプリは、まだ完全な識字率ではない非常に幼い子供のためのものであるため、学校へのログインを1回使用し、生徒がユーザー名を入力するか名前を検索するのではなく、 。SailsJS/MongoDBを使用して長いリストからすべての未使用オプションを見つける最適な方法

これに対応するため、1つの生徒が同じアイコンを持つ重複がないように、約1200個の子供向けのアイコンが用意されています。

問題は、新しい生徒が作成されたり、教師が生徒のアイコンを変更したい場合は、その学校の別の生徒が既に使用しているアイコンを選択する必要がなくなります。

私の最初の問題は、学校のテーブルを別の「availableIcons」テーブルにリンクして、各行が可能なアイコンの完全なリストから始まり、生徒が追加されるたびにアイコンが削除されることです利用可能なアイコンのリストから、削除された生徒の場合はその逆になります。

これは、現在使用されているすべてのアイコンを見て、それをアイコンの完全なリストと比較する作業をサーバがやってしまうのを防ぎます。 500人の学生。

このアプローチで私の懸念は、数字キーのようにアイコンの完全なリストを保存することですが、かなりのスペースを占めるようです。私の計算では、学校あたり2〜4MBのようなものになるでしょう。これは大きな問題ではありませんが、各学校の完全なリストを保存することなく効率的に行う方法があれば、私はそれを好むでしょう。

これはすべてSailsJS/MongoDB/waterlineを使用しています。

提案がありますか?

ありがとうございました!

答えて

1

利用可能なアイコンは、派生データです。私はそれをデータベースに保存したくないと思う。

私のアプローチ:

  1. すべてのアイコン
  2. 特定の学校や教師のためのこれらの2つのコレクションのテイク違いを全て使用されているアイコンを取得取得します。検討してください_.difference

1200アイコンは、メモリで処理する大きな数字ではありません。

関連する問題