我想设置两个架构不同的MySQL数据库,一个是规范化的,另一个是平坦的,以便更快地读取。存储在两个DB中的信息是相同的,但由于设计方法不同,表示明显不同。
我需要找到一个强大的解决方案,实时将信息从我的标准化版本同步到我的奉承版本。
编辑:同步只需要从标准化DB到平坦DB。展平的DB不会写入已从标准化表格中展平的任何表格。
答案 0 :(得分:1)
这种方法从阅读的角度来看是合理的,但不是来自写作方式。问题在于,从规范化表中反规范化要比反向规范化更容易。如果您愿意快速写入写入,则可以同时写入两组表,并只读取非规范化表。这样做的另一个好处是可以随时提供有关读取的最新信息。
如果无法以这种方式编写,则需要在一些规范化表中放入“脏标志”,这样您就可以获取新记录并使用它们更新表的非规范化。然后,您将需要一组存储过程,这些过程定期更新规范化表中的非规范化表。有关如何执行此操作的建议,请查看此处:http://www.xaprb.com/blog/2007/08/29/how-to-notify-event-listeners-in-mysql/
答案 1 :(得分:0)
如果您的去规范化旨在用于只读用途并且不是实时的话,那么您正在采用的方法很有意义。
有许多基于日志传送和触发器的解决方案可以实现近乎实时的性能 - 不确定它是否适用于mysql。这些解决方案总是有一个问题 - 没有免费的午餐。
在RDBMS游戏的这一点上,没有办法同时获得两者。通常一个人开发快速/插入OLTP DB和延迟 - 而不是实时OLAP数据库,每天填充一次。这通常满足所有报告要求的99%。