【问题标题】:Working with complex SQL Server database schemas使用复杂的 SQL Server 数据库架构
【发布时间】:2011-12-07 23:03:17
【问题描述】:

我有一个数据库,我必须保持与 SQL Server 2005 的兼容性,并且我一直在考虑降低复杂性和处理性能问题的方法。

我的数据库与大多数其他数据库一样,充满了数据,其中包含大量数据并且有很多查询。我有许多存储过程一直在发展(一段时间以来)以满足业务需求。这基本上没问题,但是我遇到了性能问题,而且我的查询变得越来越复杂,难以管理。

乍一看,我不认为我的数据模型有什么问题,它没有荒谬地规范化(我们已经对一些东西进行了非规范化),但我发现自己无法编写和运行那些用于供电的极快查询我的 Web 界面 AJAX 查询,因为所有的约束似乎有些随意地到处存在。

所以,我已经考虑过了,我想我想将我的数据库组织成环。让我解释一下。

  • 基本上,在最内圈,你会发现最专业的 数据集。这些表是完全非规范化的,并且已经 通过聚合来自外环的数据来构建,以确保特定 查询运行速度非常快。

  • 最外面的环在理想情况下是“哑”的,基本上只是一个真正的 放东西的地方不好。

  • 外部和内部之间基本上是您的概念模型,这些 从其他环拉或推到内环,这是 您在哪里清理数据并确保其正确无误。

  • 数据只能从外环流向内环。

  • 我不想使用触发器来保持不同的环保持一致,而是我有一个服务和作业,它们会定期侦听、轮询和运行以确保最终的一致性,一刀切。

现在,我在这里寻求建议,并希望从有经验的数据库人员那里获得一些意见。我相信我可以通过这种方式从我的数据库中获得更多收益。它将使我能够解决不同阶段的复杂性和性能问题。也许我正在做的事情有一个共同的名字,或者这就是 NoSQL 运动的全部意义所在,但我真的不知道,这个想法对我有一些吸引力,但如果我在那里,我'在我犯错之前想听听...

【问题讨论】:

  • 如果您想要速度和最终的一致性,NoSQL 解决方案可能是更好的选择。其中一些听起来像是使用 SQL Server 自行推出的 nosql 解决方案,这似乎是个坏主意。
  • 注意你的语言年轻人
  • @JNK - 假设跳槽和放弃 SQL Server 不会发生。此外,我对 SQL Server 做事的方式并不感到不快,以正确的方式对待,它把事情做好了。从长远来看,也许 NoSQL 是正确的选择,但我还没有……
  • @JohnLeidegren - 我绝不是 NoSQL 的拥护者(我还不太了解不同的平台),但是当我听到最终的一致性时,我想到了 NoSQL。 NoSQL B asically A vailable,S oft state,E 虚拟一致性,而不是 ACID.
  • 是的,但是 NoSQL 也不能有效地查询。您在核心中拥有的是一个 LAP 数据库——您是否使用 ROLAP 是另一个问题。大多数人(你似乎也属于这种情况)提倡 NoSql,因为他们无法从一开始就考虑 Cobbs 关系定理的可能性。糟糕的选择(我做意大利面是因为我从来没有做过肉)。您可能会惊讶于用于报告的 spcail 数据库多年来大多是“NoSql”,但也不是面向文档的。

标签: sql-server sql-server-2005 database-design


【解决方案1】:

虽然我基本上同意@TomTom 的回答,但我会换一种说法:您基本上已经自行开发了数据仓库(或具体来说是数据集市)的概念。买一本关于数据仓库的书是个好主意。参加有关该主题的研讨会或系列课程会更好。显然,您已经对此进行了一些认真的思考,当您了解最佳实践和已开发的不同方法时,这对您很有帮助。

【讨论】:

    【解决方案2】:

    您需要一本数据库入门书籍。严重地。将其拆分为 OLTP 和 OLAP 部分——数据仓库是有序的。摆脱存储过程。然后意识到您的“大量 odata”可能是其他人的“数据笑话”——我在一个应该扩展到大约 60tb 数据(即 60.000)的系统上工作——我们的初始硬件有 21.000 GB。

    您的系统听起来像是将普通数据库 (OLTP) 与数据仓库混为一谈。拆分它们 - 这不起作用。也将它们拆分为硬件。这是完整的标准 - 一本关于数据仓库的书。

    【讨论】:

    • IBM 红皮书有关于设计和构建数据仓库的标题,可免费下载。见stackoverflow.com/questions/6178330/…
    • 我需要介绍数据仓库(OLTP 和 OLAP),但不确定我需要一本关于数据库的初学者书籍。感谢您指出这一点。我的问题和任何问题一样真实,并不意味着我必须一路扩展至 TB 的数据,我们实际上并没有任何大的工作负载,只是大量的数据、复杂性和缓慢的查询,但在此之前真的成了一个问题,我正在寻找挽回局面的方法。
    • 那又怎样?抱歉 - 大量数据 + 慢查询 = 更好的硬件 + 标准方法。
    • 至少在 OLTP/OLAP 情况下,您有两个数据闲置的地方。然后大量的处理将数据从一个地方推到另一个地方。这是一个明确、明确的过程。
    猜你喜欢
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多