SQL Server 2008 R2 Enterprise Edition を使用しています。
私たちは、MetMasts と呼ばれるものから気象データを測定しています。基本的に、これは多くの装備を備えたマストです。マストのさまざまな位置にある風速計(風速用)、温度計、気圧。私たちは毎秒測定します。
そして、あまりにも多くのディスク容量を占有します。この機器の次世代は、毎年 10 GB 以上を生成します。そして、これらの数は1000を超えます。
現在のテーブル デザインは次のようになります。
CREATE TABLE #MetMast (
MetMastID INT NOT NULL IDENTITY(1,1),
MetMastName NVARCHAR(100),
CountryID INT,
InstallDate DATE
)
CREATE TABLE #MetMastData (
MetMastDataID BIGINT NOT NULL IDENTITY(1,1),
MetMastID INT NOT NULL,
MeasuredAt DATETIME2(0) NOT NULL,
Temperature REAL NULL,
WindSpeedAt10m REAL NULL,
WindSpeedAt30m REAL NULL,
AirPressure REAL NULL,
OneHundredMoreColumns VARCHAR(200),
CONSTRAINT PK_MetMastData PRIMARY KEY CLUSTERED
(
MetMastID ASC,
MeasuredAt ASC
))
WITH (DATA_COMPRESSION = ROW)
-- ON a file group, with table partitioning
ALTER TABLE #MetMastData WITH NOCHECK ADD CONSTRAINT FK_MetMast_MetMastID FOREIGN KEY (#MetMast) REFERENCES #MetMast(MetMastID)
データは 1 回書き込み、何度も読み取られます。
私たちはデータウェアハウスでそれを使用しています。典型的な質問は次のとおりです。MetMast に従って、温度が 20 度を超えているときに、WindSpeedAt10m と WindSpeedAt30m の間に 2 m/s の差がある回数を数えます。
SELECT MetMastId, COUNT_BIG(*) FROM #metMastData
WHERE temperature>20 AND ABS(WindSpeedAt10m-WindSpeedAt30m) >2
GROUP BY MetMastID
将来的には、わずかなデータ損失は許容されます。
ここでは、データの非可逆圧縮について説明しています。10% の精度で測定する場合、1% のように、フィールドごとに許容誤差を定義する必要があることはわかっています。
サウンド ファイル (MP3 は非常に大きい) で機能したので、私たちにも機能する可能性があります。
しかし、これはどのように行われますか?
どのテーブルデザインを選ぶべきですか?
データベース テーブル内のデータの非可逆圧縮を開始するにはどうすればよいですか?
よろしくお願いします、
ヘンリック・スタウン・ポールセン