1

使用: SQL Server 2008、Entity Framework、WCF 4 REST

監視システム(別名アプリ)によって生成された測定データを保持するためのテーブルがあります。現在、アプリ内で監視されている既知のデータは約 10 種類あり、それぞれが表の列に対応しています。各顧客は、各アプリを「カスタマイズ」して、1 ~ 10 個のデータをキャプチャできます。分析に関心のある情報のみをキャプチャする必要があります。この単純な固定スキーマでは、すべてがうまく機能しています (そしてパフォーマンスも良好です)。このスキーマはマルチテナントになるように設計されているため、複数の場所にある複数の顧客にまたがる複数のアプリケーションが、同じ DB にデータを送り込むことができます。数百万行の測定データです (以前に Azure に行っても驚かないでしょう)。長いです)。

私は、測定アプリケーションがまもなく追加の「もの」を監視できるようになると言われています。この新しいリスト (これまでのところ、約 150 アイテムと聞いています) は、約 1000 アイテムが測定される可能性があります。それに加えて、ユーザーは監視/測定するアイテムに対して独自の基準を指定できます (つまり、カスタム測定はカスタム列に相当します)。良いニュースは、すべての測定データが整数になることです。

さて、お楽しみは、この状況のスキーマをどのように設計すればよいかということです。スキーマを固定したままにしておきたいと思います。また、大量のデータを考慮して、可能な限りパフォーマンスを維持したいと考えています。

どんな助けでも大歓迎です。

現在のスキーマ:

CREATE TABLE MeasurementData (
    DataId bigint IDENTITY(1,1) NOT NULL PRIMARY KEY,
    ApplicationId int NOT NULL,    -- FK to Application table
    DateCollected datetime NOT NULL,
    Length int NULL,
    Width int NULL,
    Height int NULL,
    Color int NULL,
    Shape int NULL,
    Mass int NULL
)
CREATE TABLE Application (
    ApplicationId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
    CompanyId int NOT NULL,    -- FK to Company table
    SerialNumber nvarchar(50) NOT NULL
)
CREATE TABLE Company (
    CompanyId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
    CompanyName nvarchar(50) NOT NULL
)

そして、会社とユーザーの間に1対nの関係があるユーザーテーブル、ロールテーブルなどがあります。

参考までに、Web アプリはデータを表、グラフなどで表示します (REST Web サービス層を介して通信します)。

4

2 に答える 2

2

テーブルをあと2つ追加できますか?1 つは測定の種類を持ち、もう 1 つはタイプから測定自体へのマッピングを持ちますか?

基本的に {DataId, DataMeasurementTypeId, DataValue} と {DataMeasurementTypeId, DataMeasurementType} を持つテーブル

これにより、テーブル内のすべてのデータ測定値を取得するストアド プロシージャを提供できるようになります。

Name,Value テーブルを使用して解決し、ビジネス オブジェクト レイヤーに適切なコンテンツの構築を任せるのがより良い方法かもしれません。ただし、RDBMS よりも Google の BigTable アプローチの方が適しています (そして、パフォーマンスが向上する可能性があります)。

于 2011-01-22T03:43:27.733 に答える
1

これらの SO の例を見てみましょう: onetwothree

于 2011-01-22T14:49:00.477 に答える