Sql 活动数据结构-此模型(或类似模型)是否已存在? 活动数据结构
这个概念是 您有一个表(一个包含大量记录的表) 还有n个表包含与Data1相同的列Sql 活动数据结构-此模型(或类似模型)是否已存在? 活动数据结构,sql,database-design,Sql,Database Design,这个概念是 您有一个表(一个包含大量记录的表) 还有n个表包含与Data1相同的列 [data2] (call these the 'inactive' tables) --------- Data2ID (req.) SysID (req.) createdDate (req.) lastUpdatedDate (req.) [mydata] (user's fields) 当用户查询记录时,会激活一个触发器,该触发器 启动对数据1(“活动”表)的搜索。 如果未找到记录,它将检查中的“非活
[data2] (call these the 'inactive' tables)
---------
Data2ID (req.)
SysID (req.)
createdDate (req.)
lastUpdatedDate (req.)
[mydata] (user's fields)
当用户查询记录时,会激活一个触发器,该触发器
启动对数据1(“活动”表)的搜索。如果未找到记录,它将检查中的“非活动”表 下单 如果在“非活动”表中找到记录, 记录将从该表中删除并插入到 数据1(“活动”表) 新记录进入“活动”表 共享sysid的表之间永远不会有冗余记录 日常工作
- 每个表格都指定了一个“期限”日期范围:
数据2:3个月-6个月
数据(n):上次定义之前的任何内容等
- 任何行修改都将基于“活动”表应用于“非活动”表
- “活动”表中LastUpdateDate在“非活动”表的“期限”内的任何记录都将从“活动”表中删除,并移动到相应的“非活动”表中。非活动表也会以相同的方式进行检查
对非活动数据的搜索显然需要更长的时间。看起来像是您自己的分区。我建议您查看RDBMS供应商提供的分区选项。它们并不完全适合这种情况,但您可能会发现在大多数情况下允许分区修剪 其他问题 如果在select上将数据从非活动“分区”移动到活动“分区”,则select必须减慢速度以进行数据修改 数据修改往往需要比读取更重的锁。以甲骨文为例。两个查询正在尝试读取相同的记录。通常两者都只是读取值,但使用此方案,而不是仅读取记录,两者都将尝试通过在表之间移动来进行修改,其中一个将阻止另一个。这称为。SQLServer支持一种称为水平分区的方法,它可以实现这种功能。您可以自己滚动,也可以使用NHibernate之类的透明工具 不能对select语句运行触发器。您可以创建一个视图或使用一个服务/存储库来处理数据库查询并一直搜索,直到找到匹配项为止,但我会考虑使用NHibernate或一些已经对此提供了一些测试支持的东西
[data2] (call these the 'inactive' tables)
---------
Data2ID (req.)
SysID (req.)
createdDate (req.)
lastUpdatedDate (req.)
[mydata] (user's fields)
[data(n)]
---------
Data(n)ID (req.)
SysID (req.)
createdDate (req.)
lastUpdatedDate (req.)
[mydata] (user's fields)