sql-server - 帮助找出(近)实时多维数据查询的方法

标签 sql-server database database-design olap

我有一个涉及大量相关表的系统。考虑一个标准的类别/产品/订单/客户/订单项目场景。有些表是自引用的(如类别)。这些表都不是特别大(大约 10 万行,估计规模约为 100 万行)。我需要考虑这些数据的很多维度,但必须以近乎实时的方式进行查询。我也不知道特定用户对哪些维度感兴趣——它可以是多个表中的一个或多个标准。范围从

  1. 给我一类夹克的一切
  2. 请提供夹克类别的所有东西->上个月在纽约购买的红色派克大衣
  3. 将所有不是在纽约购买的值(value)超过 100 美元的东西都给我。

目前我们有一个非常长的 SP,它使用“级联数据”方法 - 我们逐表进行,使用为该表指定的任何标准将所有内容过滤到临时表中。对于下一个表,我们将当前临时表连接到我们正在使用的任何表,并将新的过滤器集应用到新的临时表中。它有效,但可管理性和性能很慢。我需要更好的东西。

我需要一种新方法来解决这个问题。显然需要 OLAP,可能使用星型模式。这能实时工作吗?它可以配置为实时工作吗?我应该使用索引 View 来创建一组非规范化表吗?我应该将其完全卸载到数据库之外吗?

仅供引用,我们正在使用 SQL Server。

最佳答案

如您所说,这非常适合 OLAP。 使用 Sql Server 2005 和 2008,您可以设置几乎实时的解决方案。你应该:

  • 创建非规范化星型模式
  • 使用该模式构建 OLAP 多维数据集
  • 启用主动缓存以在基础数据源发生变化时更新多维数据集。

这不是一项简单的工作,您需要 Sql Server 的企业版才能使用主动缓存。您还需要一些前端工具(也许 excel 可以)来使用多维数据集。

关于sql-server - 帮助找出(近)实时多维数据查询的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686199/

相关文章:

mysql - 在 MySQL 中连接表 A 的行和表 B 的列

mysql - 数据库表,越多越好?

mysql - 来自多个表 MySql 的单个查询

c# - Entity Framework "SELECT IN"不使用参数

database - 用于存储大文件的数据库的最佳技术

c# - 如何确保两个 Azure SQL 数据库的性能相似?

php - 我该如何修复 "1366 Incorrect string value: '\xE5'

mysql - 使用 SQL Server 创建 XML 文档

SQL - 在一个脚本中创建数据库和表

java - JDBI 查询返回 MSSQL datetimeoffset(4) 列的错误值?