Database design 以写访问速度为代价实现快速读访问的数据库模式

Database design 以写访问速度为代价实现快速读访问的数据库模式,database-design,database-schema,Database Design,Database Schema,我有一个问题,我有一个需要很长时间才能访问的大型数据库,部分原因是它规范化了,需要很多连接(它非常类似于现在的启动模式)。但是,我不关心写时间/潜在的写异常,需要数据库快速进行分析。有人能给我指出适合于分析而不太适合在线性能的数据库模式的好文本吗 例如表:表1包含静态产品信息,表2包含购买/查看产品的所有时间的实例。。。对其采取的特定n项行动,以及为每项行动支付的费用。我的很多工作都涉及到寻找某些产品,在这些产品上进行了某些操作 谢谢。保持您的模式不变-例如“正确”,但索引中数据的完全非规范化(

我有一个问题,我有一个需要很长时间才能访问的大型数据库,部分原因是它规范化了,需要很多连接(它非常类似于现在的启动模式)。但是,我不关心写时间/潜在的写异常,需要数据库快速进行分析。有人能给我指出适合于分析而不太适合在线性能的数据库模式的好文本吗

例如表:表1包含静态产品信息,表2包含购买/查看产品的所有时间的实例。。。对其采取的特定n项行动,以及为每项行动支付的费用。我的很多工作都涉及到寻找某些产品,在这些产品上进行了某些操作


谢谢。

保持您的模式不变-例如“正确”,但索引中数据的完全非规范化(即准备呈现)版本

文本搜索引擎不提供更新或加入功能,但它们很快!你不会相信它有多快,直到你自己看到它,但它将在几毫秒的顺序

文本搜索引擎之所以如此之快,是因为它们使用了。我已经实现了好几次,而且一直都是值得的。你需要做的就是确保每次真实数据发生变化时,你都会对文本搜索引擎中受影响的内容重新编制索引。

“规范化”并不总是意味着“需要大量连接”。但是使用代理键(id号)通常可以

构建一个测试数据库,标准化为5NF,而不使用任何具有自然密钥的id号。例如,没有国家(使用ISO代码)、州、邮政编码、类别等的id号


这种结构实现了空间/时间的权衡。在一定程度上,在一定条件下,自然关键点的执行速度比代理项快,因为“关键点”信息(咳嗽)通常会在自然关键点中携带。所以你不需要加入就可以了。但代理键的速度会更快,因为它们需要更少的I/O,并且页面中可以容纳更多的行。您需要测试以确定该点在哪里,以及您是否能够接受它。

谢谢,这确实是一个非常好的解决方案。我会试试看。但是,它不会考虑一些字段被排序的事实。另外,不要吹毛求疵,也绝对不是忘恩负义,但是说几毫秒而不说任何关于数据大小、查询类型等的内容似乎不是很正确!非常感谢你的回答。大家请继续回答。另外,我有很多数字-双打,会玩得好吗?另外,你能简单地告诉我,它比一个有数字字段的数据库要快多少?对于任何正常的查询来说,几毫秒几乎是一个标准的响应时间。关于double,如果您使用的是java,请查看-它是lucene之上的java层,允许您将基本java类型保存和检索到字段中。搜索可以是所有数据类型的精确、部分和范围。还可以直接支持横向/长区域搜索。这真是太棒了。有人建议为每个产品创建一个表,其中包含所有的操作/数量吗?