タイムスタンプで定義されたフロー内のノード、フロー内のノードには、次のSQLテーブルがあります。すべてのフローにボリュームがあります。SQLテーブルを自動的に集計してパーティション化する
| ID | timestamp | source | handover | nexthop | destination | volume |
|----|-----------|--------|----------|---------|-------------|--------|
| 01 | 123456788 | src001 | hnd 001 | nxt 002 | dst 001 | 1.23 |
| 02 | 123456789 | src002 | hnd 001 | nxt 002 | dst 003 | 4.32 |
| .. | ......... | ...... | ....... | ....... | ....... | .... |
現時点ではテーブル26万行(データの2ヶ月程度)で構成され、すべてのフローのエントリは、時間ごとにありますので、それが急速に成長します。私は任意なtimeRangeについてのフローのボリュームをまとめ取得するクエリをやっている時点では
(例えば8日)は、このようなノード上のフィルタリングとは:
SELECT source, handover, nexthop, destination, sum (volume)
WHERE timestamp >= ts_start AND timestamp <= ts_end
AND (source = 123 OR source = 345) AND (nexthop = 789)
GROUP BY source, handover, nexthop, destination
当社のデータベースは大きく、スピード違反の必要性成長するにつれて私はすでに遅いクエリを実行していますが、テーブルをさまざまなタイムスライス(たとえば6時間、12時間、24時間)に分割したいが、すべてのテーブルが共存するようにしたい。
07:17/16午後10時から07/19/16午前6時までの質問は、タイムスタンプで分割され、07/17/16午後10時から午後7時17分までの標準1時間表で回答されます。 07/17/16 12 PM、次に07/18/16 12 AMから07/18/16 12 PMまで、残りは6時間表から。
集計と分割を自動的に行うだけでなく、クエリの回答にSQLを使用して、アプリケーションのすべてのロジックを実装する必要はありませんか?
ありがとうございます!