我正在开发一个Web应用程序,其中,对于每个客户端(小型大型组织),他们没有(也不应该)能够查询到其他客户端的记录。将数据保存在单个数据库中会很容易,并且使更新和维护变得简单(直到遇到可伸缩性问题)。但我现在想要面向未来的应用程序。如果每个客户的数据都包含在孤立的数据库中,则每个客户都会获得更好的性能,并且应该更好地扩展。我不确定它是否相当于数据库“分片”,因为我没有在多个数据库之间划分单个模式。我基本上会在每个数据库中都有一个复制的模式(就像当天在CD上发布软件时一样 - 每个数据库都有自己的数据库)。设置数据库分片 - 没有跨数据库查询
我已经读了一点,所以我有一个概念的想法。但是,我的头脑里有很多问题。我不确定这个过程的透明度如何。或者,如果我想要推出更改,就会遇到更新数百个架构的维护噩梦。
真的,我只是在寻找一个简单的“完整”例子(希望使用spring/java)。
我会想象我能有一个单一的应用程序服务器开始单一的数据源,比方说,一个MySQL实例与单个表映射用户ID到数据库。
- 用户ID
- 数据库/碎片-ID
对于每一个请求(查询),忽略数据库高速缓存,那就要查找的碎片ID的用户?或者,这是否可以在每个会话中最初执行一次并直接与目标数据库进行交谈? (正如你可能能够告诉我对服务器端的东西不够强大)。
有人可以提供一个关于在Spring中如何连接的高层概述吗?目前,我的架构非常简单。我有简单的Spring组件DAO使用jdbctemplate。 DAO的数据源被注入(数据源在applicationContext.xml上配置)。 DAO自动装入我的服务类。相当标准的东西。
比方说,我得到了上一步工作,现在我必须改变架构。是否有管理工具可以用于一次应用模式更改并将其传播到100个其他数据库?
我正在使用MySQL。我相信“MySQL代理”可能能够解决问题1和2.有没有人有这方面的经验?我想它无法处理管理模式更新,所以我可能不得不推出我自己的解决方案。
谢谢!