我感兴趣的是实现一个架构,它有两个数据库,一个用于读操作,另一个用于写操作。我从来没有实现过这样的东西,并且总是构建单个数据库,高度规范化的系统,所以我不太清楚从哪里开始。我对这个问题有几个部分。
1。如何找到更多关于这种架构的资源呢?
2。它只是在两个相同的模式之间进行复制的问题,或者您的模式会根据操作而有所不同,标准化也会有所不同吗?
3。您如何确保写入一个数据库的数据可以立即从第二个数据库中读取?
任何进一步的帮助,提示,资源将不胜感激。感谢。
修改的
经过一些研究后,我发现这篇文章对于那些感兴趣的人来说非常有用。
http://www.codefutures.com/database-sharding/
我发现这种高度可变性article提供了非常丰富的信息
答案 0 :(得分:17)
我不是专家,但读/写主数据库和只读从属模式是一种“常见”模式,尤其适用于主要进行读取访问或数据仓库的大型应用程序:
如何了解有关此架构的更多信息?
互联网上有很好的资源。例如:
这只是一个在两个相同模式之间复制的问题,或者你的模式会根据操作而有所不同,标准化也会有所不同吗?
我不确定 - 我渴望阅读专家的答案 - 但我认为模式在传统的复制场景中是相同的(虽然调整可能不同)。也许人们正在做更多异国情调的事情,但我不知道在这种情况下他们是否依赖数据库复制,听起来更像是“实时ETL”。
如何确保写入一个数据库的数据可以立即从第二个数据库中读取?
我猜你需要同步复制(当然比异步慢)。虽然有些数据库支持这种模式,但并非所有数据库都支持AFAIK。但请查看SQL Server的this answer或this one。
答案 1 :(得分:3)
您可能会查找数据仓库。 它们用作“报告规范化”类型数据库,同时可以为数据维护保留规范化的OLTP样式实例。
我不认为“立即”等同的想法将成为现实。将新数据和更改迁移到其他系统时会有一些延迟。时间表和范围将是您的重大决定。
答案 2 :(得分:1)
关于问题2:
这实际上取决于你想通过拥有两个数据库来实现的目标。如果是出于性能原因(我怀疑它可能是),我建议你根据性能的需要考虑对只读数据库进行非规范化。如果性能不是问题,那么我就不会搞乱只读模式。
我曾经在类似的系统上工作,那里会有一个只有管理用户轻易使用的读/写数据库。然后,该数据库将在夜间过程中复制到只读数据库。
问题3: 我们在这里谈得多快?不到一秒钟? 10秒?分钟?