1

使用:SQL Server 2008、实体框架、WCF 4 REST

我有一个表格来保存监控系统(又名应用程序)生成的测量数据。目前在应用程序中监控着大约 10 种不同的知名数据——每一种都对应于表中的一列。每个客户都可以“自定义”他们的每个应用程序以捕获 1 到 10 条数据——他们只需要捕获他们有兴趣分析的那些信息。使用这种直截了当的固定模式,一切都很好(并且性能很好)。此架构设计为多租户,因此跨多个位置的多个客户的多个应用程序可能会将数据泵入同一个数据库 - 数百万行测量数据(如果我们以前也使用 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 关系 btw 公司和用户。

仅供参考,Web 应用程序将使用表格、图表等呈现数据(通过 REST Web 服务层进行通信)

4

2 回答 2

2

你能再增加两张桌子吗?一个是测量类型,另一个是从类型到测量本身的映射?

基本上带有 {DataId, DataMeasurementTypeId, DataValue} 和 {DataMeasurementTypeId, DataMeasurementType} 的表

这应该允许您提供存储过程来检索表中的所有数据测量。

更好的选择可能是使用 Name,Value 表来解决它,并让业务对象层负责构建正确的内容。尽管与 RDBMS 相比,Google 的 BigTable 方法更适合(并且可能执行)更好。

于 2011-01-22T03:43:27.733 回答
1

看看这些 SO 示例:one , two , three

于 2011-01-22T14:49:00.477 回答