【发布时间】:2011-01-22 03:25:09
【问题描述】:
使用: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 公司和用户。
仅供参考,然后网络应用程序将通过表格、图表等呈现数据(通过 REST 网络服务层进行通信)
【问题讨论】:
-
您将不得不切换到垂直存储数据。这将允许无限量的度量,并且还有助于提高性能,因为您可以将传输的数据减少到仅用户订阅的度量。
标签: sql sql-server database-design azure-sql-database