Sql 数据库规范化和快速搜索

Sql 数据库规范化和快速搜索,sql,database,database-design,Sql,Database,Database Design,我正在研究内容解决方案集成的技术体系结构。来自解决方案提供商的数据运行到数百万行,并标准化为3NF。它会定期更新(最有可能是每天更新),并且它的数据会被分解为非常细粒度的原子性级别 我需要搜索和查询这些数据,而我目前的倾向是不使用标准化数据,而是从其数据(OLAP到OLTP)创建一个非标准化数据库。“传输”可以是一个自定义构建的程序,除了原始复制能力之外,还可以包含必要的业务逻辑,并且可以根据需要按设定的时间表运行。然后,非规范化数据库将减少原子性,并允许关键字搜索和查询高效运行。我正在考虑在非

我正在研究内容解决方案集成的技术体系结构。来自解决方案提供商的数据运行到数百万行,并标准化为3NF。它会定期更新(最有可能是每天更新),并且它的数据会被分解为非常细粒度的原子性级别

我需要搜索和查询这些数据,而我目前的倾向是不使用标准化数据,而是从其数据(OLAP到OLTP)创建一个非标准化数据库。“传输”可以是一个自定义构建的程序,除了原始复制能力之外,还可以包含必要的业务逻辑,并且可以根据需要按设定的时间表运行。然后,非规范化数据库将减少原子性,并允许关键字搜索和查询高效运行。我正在考虑在非规范化数据库中使用关键字work

因此,在我从山上高声唱出这是前进的道路之前,我想听听专家对这方面的意见,以及什么是公认的“最佳实践”。考虑到我将提供的数据,我建议的方法是否是前进的最佳途径?有人建议,或许我可以使用“搜索引擎”来搜索标准化数据。这吓坏了我,但提出了一个问题;什么样的搜索引擎,如何


意见、火焰、拙劣的语言和帮助都得到了赞赏:)

我已经根据以规范化形式存储的数据建立了报告数据库和数据仓库。在传输程序(ETL)中涉及到相当多的工作。根据您对数据馈送的描述,馈送器可能已经为您完成了一些工作

如今,数百万行并不多。您可以在现有数据库中使用面向报告的视图。试试看


构建面向OLAP的数据库的最大好处不是速度。这是灵活性。“我们喜欢这份报告,但现在我们想每周和每季度看一次,而不是每月看一次。砰!完成!”“你能按营销类别而不是制造类别来细分它吗?砰!完成!”等等。

一个合理的标准化模型(3NF/BCNF)为最多的场景提供最佳的平均性能和最少的修改异常。那太大了,所以我从那里开始。由于您的需求是模糊的,这似乎是最明智的选择

实际上,最明智的做法是仔细检查需求,直到它们变得更“清晰”;)

此外,如果您能够从数据提供者那里获得一些早期的摘录,您可以对其进行实验,并对数据分布有一个感觉(并非所有人都生活在一个国家,有些国家的人口比其他国家多。并非所有人都有子女,而且每个国家的人均子女数量差异很大)。这是一个要点,优化器能够做出正确的决策至关重要


除此之外,我同意Walter所说的一切,并给了他我的投票。

你确定你在搜索规范化形式的数据时有问题吗?有一些数据库可以从搜索的非规范化中受益,但根据我的经验,人们很快就会认为他们有性能问题。还有,什么是RDBMS你在使用?谢谢你的回复Larry。这都是基于MS SQL的。我可以向你保证,对标准化数据执行基于关键字或半复杂的查询需要一段时间。文明来得快去得快!在这样做之前,我会仔细检查所有索引FK,并最终监控%处理器和%内存。我最近发现这里有一个很好的免费诊断工具:我同意Larry的观点。即使有数百万行和大量的表,如果键和索引设置正确,查询也应该很快。你可能是在varchar字段上执行连接,还是做了一些不健康的事情?@Doobert,这个问题无法像目前所说的那样得到回答。你需要提供关于数据结构、主要查询模式、估计数据增长、并发级别、可接受的响应时间、所需答案的准确性级别的信息,我可以继续:)Walter,感谢您的回复。基于这里的所有因素,ETL计划是我最喜欢的方法。OLAP数据将完全按照您所描述的那样执行,例如,对报告a、b、c和d的大量请求。我确实对标准化数据的具体化观点持保留态度,但有一些失控的因素使其成为不太可能的解决方案。