我正致力于内容解决方案集成的技术架构。解决方案提供商提供的数据运行到数百万行,并标准化为3NF。它定期更新(每天最有可能),其数据被分解为非常精细的原子级。
我需要搜索和查询这些数据,我目前的倾向是单独保留规范化数据,并从其数据(OLAP到OLTP)创建非规范化数据库。 “传输”可以是自定义构建的程序,除了原始复制功能外,还可以包含必要的业务逻辑,并根据需要以设定的时间表运行。然后,非规范化数据库将降低原子性并允许关键字搜索和查询有效运行。我正在考虑在非规范化数据库上使用Lucene .NET进行关键字工作。
所以,在我从山上大声唱出这是前进之路之前,我想要一些专家意见,以及所谓的“最佳实践”。考虑到我将提供的数据,我建议的方法是最好的方法吗?有人建议我也许可以使用“搜索引擎”来搜索规范化数据。这吓坏了我,但提出了问题;什么搜索引擎以及如何?
意见,火焰,糟糕的语言和帮助赞赏:)
答案 0 :(得分:2)
我根据以规范化形式存储的数据构建了报告数据库和数据仓库。转移计划(ETL)涉及相当多的工作。鉴于您对数据馈送的描述,可能是馈线已为您完成了一些工作。
如今,数百万行不是很多。您可以在现有数据库中使用面向报表的视图。试试吧,看看。
构建面向OLAP的数据库的最大好处不是速度。这是灵活性。 “我们喜欢这份报告,但现在我们想要每周和每季度而不是每月看一次.Bam!完成!” “你可以通过营销类别而不是制造类别来分解它吗?Bam!完成!”等等。
答案 1 :(得分:0)
共振标准化模型(3NF / BCNF)为最大数量的场景提供了最佳的平均性能和最少量的修改异常。那很大,所以我会从那里开始。由于您的要求很模糊,这似乎是最明智的选择。
实际上,最明智的做法是超越要求,直到它们更加“清脆”;)
此外,如果您可以从数据提供商处获得一些早期摘录,您可以对其进行试验并了解数据分布(并非所有人都生活在一个国家/地区,而且某些国家/地区拥有的人数超过其他国家/地区。并非所有人都有孩子,每个人的子女数量因国家而异。)这是一个重点,优化器可以做出正确的决定至关重要。
除此之外,我同意沃尔特所说的一切,也给了我投票。