我有一个数据库,我必须保持与SQL Server 2005的兼容性,我一直在考虑降低复杂性和处理性能问题的方法。
我的数据库和大多数其他数据库一样,填充了数据,这是很多数据,并且有很多查询。我有许多存储过程(一段时间以来)不断发展以满足业务需求。这很好,但是我遇到了性能问题,我的查询变得越来越复杂。
乍一看,我认为我的数据模型没有任何问题,它没有荒谬的规范化(我们已经对某些东西进行了非规范化),但我发现自己无法编写和运行那些超快的查询来启动我的网络界面AJAX查询,因为所有的约束似乎有点随意存在。
所以,我已经考虑过了,我想我想用戒指组织我的数据库。让我解释一下。
基本上,在最内圈,你会找到最专业的 数据集。这些表完全非规范化并且已经存在 通过聚合来自外环的数据来构建,以确保具体 查询运行得非常快。
最外面的戒指理想地“哑”,基本上只是一个真正的 放东西不好的地方。
外在和内在之间基本上就是你的概念模型 从其他环拉出或推到内圈,这是 清理数据并确保数据正确的地方。
数据只能从外圈流到内圈。
我不想使用触发器来保持不同的环一致,而是我有一个服务和工作,定期监听,轮询和运行,以确保最终的一致性,跨越董事会。
现在,这是我征求意见的地方,希望能从经验丰富的数据库人员那里获得一些意见。我相信我可以通过这种方式从我的数据库中获得更多。它将使我能够在不同阶段解决复杂性和性能问题。也许我正在做的事情有一个共同的名字,也许这就是NoSQL运动的全部内容,但我真的不知道,这个想法对我来说有吸引力,但如果我走出去,我'我想在犯错误之前先听听它......
答案 0 :(得分:1)
虽然我基本同意@ TomTom的回答,但我会用不同的方式来表达:你基本上已经开发了数据仓库(或数据集市,具体而言)的概念。购买一本关于数据仓库的书是个好主意;参加有关该主题的研讨会或系列课程会更好。您显然已经对此做了一些认真的思考,当您了解最佳实践和已经开发的不同方法时,这将很好地为您服务。
答案 1 :(得分:0)
你需要一个初学者进入数据库。认真。将其拆分为OLTP和OLAP部分 - 数据仓库按顺序排列。摆脱存储过程。然后意识到你的“很多odata”可能是其他人的“数据笑话” - 我的系统应该可以扩展到大约60tb的数据(即60.000) - 我们的初始硬件有21.000千兆字节。
您的系统喜欢将普通数据库(OLTP)与数据仓库混合在一起。分开他们 - 这不会工作。将它们拆分为硬件。这是关于数据仓库的完整标准 - geta书。