我有一个问题,只是在这里寻找建议。
因此,我的应用程序通过将桌面应用程序转换为网络来“现代化”桌面应用程序,并使用 ICEFaces UI 和用 Java 编写的服务器端。但是,他们保留同一个 Oracle 数据库,该数据库目前有大约 700-900 个表,表中的记录总数可能有 10 亿条。一些单独的表有 2.5 亿行,许多有超过 2500 万行。
不用说,数据库的扩展性不好。结果,应用程序的性能看起来很糟糕。架构师/决策者都拒绝或不愿意重组持久性。因此,基本上我们是在功能性桌面应用程序上涂上一层新漆,该应用程序目前可以满足大多数用户的需求,而且相对容易。现在桌面应用程序中的实际数据库性能非常慢。我之前提到的快速性能是与数据库无关的东西(抱歉我说错了)。想到这个应用程序的性能会多么糟糕,以及日常用户完成他们的工作会有多么困难,我晚上睡不着觉。
那么,我的问题是,我有哪些选择可以减轻这场迫在眉睫的灾难?是否可以在数据库和 Java 代码之间放置某种类型的中间层以提高性能,同时保持数据库结构完整?缓存显然是一种选择,但我不认为它是万灵药。是否可以在两者之间分层 NoSQL 数据库?
最佳答案
我不明白如何调和你所说的两件事。
Needless to say, the database is not scaling well
和
currently serves most user needs and does so with relative ease and quick performance.
您并没有说要添加新用户或新功能,只是让相同的功能可以通过 Web 界面访问。
那么为什么会出现问题。您的 Web 应用程序将或多或少地执行与以前相同的数据库工作。
事实上,引入 Web 层很可能会提供新的缓存机会,从而减少数据库所做的工作。
如果您早期的网络应用程序开发表现不佳,那么我会首先尝试了解您在网络应用程序中执行的查询与现有应用程序执行的查询有何不同。是否有可能您正在使用一些工具,这些工具采用了一种有些天真的方法来生成查询?
关于database - 如何对庞大的遗留数据库进行现代化改造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963092/