複数のバスの位置 (緯度と経度) を保存するためのデータベースを設計したいと考えています (追跡アプリになります)。したがって、各バスに 1 つのデバイスを配置し、この場所を 10 秒ごとにサーバーに送信して、データベースに保存します。また、特定のバスの場所を検索するクライアントも用意します。
私は2つの可能な解決策について考えました.1つは2つのテーブルを作成し、1つはバス番号、日時、緯度、経度の次の列を含む完全なレポートを保存することです. 2 番目のテーブルも同じですが、最後の位置を格納するだけなので、このテーブルのバスのエントリは常に更新されます。最初のテーブルには大量の行があり、成長が速すぎるため、2 つ目のテーブルを作成して最後の場所を格納し、クライアント クエリのパフォーマンスを向上させることを考えました。
この 2 番目のテーブルだけを保持しない理由 (クライアントの機能には十分です) は、完全なレポートで統計を取得できるようにするためです。
2 番目の解決策は、すべてのレポートを含む 1 つのテーブルを作成することです。クライアントが場所を知りたい場合は、その特定のバスの時刻で最後に注文したものを探します。しかし、前に述べたように、テーブルが大きくなりすぎると、将来的には時間がかかりすぎる可能性があります。その他の可能性としては、データベース エントリを毎週クリーンアップする方法があります。たとえば、統計を取得して 1 つのテーブルに保存し、メインのテーブルをクリーンアップします。
さらに、そのテーブルの主キーとなるべきものも知りたいです。timedate を主キーとして使用することはお勧めできません。時間の差が小さすぎると、同じ timedate と見なされてエントリが保存されないことがあるためです。でも、10秒ごとに報告するので、問題ないかもしれません。他のオプションは、すべてのレポートに ID を追加することですが、スペースの無駄だと思います。または、主キーなしでそれを使用することもできます(アドバイスされていないと思います...)。
2 番目のテーブルでは、バスの行番号を主キーとして使用します。これは、すべてのバスに 1 つのエントリ (最後のエントリ) しかないため、繰り返しが発生しないためです。
このすべてについて何か助けはありますか?あなたがこの分野で見ることができるように、私はかなり初心者です。
要約すると、私の質問は次のとおりです。
- 2 つのテーブルを使用するとパフォーマンスが向上しますか、それとも 1 つだけで十分ですか?
- すべてのレポートを含むテーブルの主キーは何ですか?
読んでくれて、助けてくれてありがとう:D