我目前的任务是为相对大量的数据实施存储模式。将主要访问数据以确定当前data point
值,但我还需要跟踪过去六个月的历史数据趋势/分析。
加入最近要求跟踪min
/ max
/sum
在过去的小时值。
注意:理想情况下,我想考虑 MongoDB 选项,但我需要先证明我已经用完了 SQL-Server 选项。
数据
下表表示主要数据源(最常查询)。该表将有大约 500 万行。数据更改将主要是初始数据加载后UPDATE
非常偶然的INSERT
语句。我选择了对数据进行聚类,dataPointId
因为您将始终选择all values for a given data point
.
// Simplified Table
CREATE TABLE [dbo].[DataPointValue](
[dataPointId] [int] NOT NULL,
[valueId] [int] NOT NULL,
[timestamp] [datetime] NOT NULL,
[minimum] [decimal](18, 0) NOT NULL,
[hourMinimum] [decimal](18, 0) NOT NULL,
[current] [decimal](18, 0) NOT NULL,
[currentTrend] [decimal](18, 0) NOT NULL,
[hourMaximum] [decimal](18, 0) NOT NULL,
[maximum] [decimal](18, 0) …
Run Code Online (Sandbox Code Playgroud) 鉴于以下 CREATE TABLE 语句:
CREATE TABLE [dbo].[Unit]
(
[id] SMALLINT NOT NULL IDENTITY(1,1),
[name] VARCHAR(100) NOT NULL,
CONSTRAINT [PK_Unit] PRIMARY KEY CLUSTERED ([id]),
CONSTRAINT [UQ_Unit_Name] UNIQUE ([name])
)
Run Code Online (Sandbox Code Playgroud)
如何在不违反 UNIQUE 约束的情况下允许以下两个字符串共存?
INSERT INTO dbo.Unit (Name) VALUES('e³m³/day')
INSERT INTO dbo.Unit (Name) VALUES('e3m3/day')
Run Code Online (Sandbox Code Playgroud)
任何见解表示赞赏。
编辑
当前整理是 Latin1_General_CI_AS
编辑
除非有人有更好的选择,否则我似乎必须使用 Latin1_General_BIN 并在我需要的几个地方手动处理 CI……如果没有提供更好的解决方案,我会将其转换为答案。
sql-server constraint sql-server-2008-r2 string unique-constraint