我在 StackOverflow 上搜索过,但没有找到这个讨论,所以我想在这里发布它以获取社区的意见。我也认为这个讨论可能也适用于其他团队,所以希望这是一个有用的帖子。如果这是一个重复的主题,请告诉我,我会删除它。
背景:
我从事一个相当大的合同软件项目,现在大约有 15 年的历史。该系统是一个客户端-服务器风格的应用程序,带有一个 SQL Server 数据库和一个在 Windows 上运行的用 MFC/C++ 编写的胖客户端。该应用程序的 API 完全是扁平的,非面向对象的,因为它完全封装在 COM 中。数据库大约有 780 个表,应用程序有超过 700 万行代码。在过去 8 年左右的时间里,大多数表格都已添加,并且随着新的增强请求正在酝酿中,我们不会很快看到这种放缓。最初的架构方法是将所有内容存储在表/列中,就像在类层次结构中一样。ORM 框架(Hibernate、Entity 等)如何工作以持久化数据。
在过去的几年里,我们的客户表达了重新架构系统并彻底重写应用程序的愿望,因为系统基本上已经超出了自身,并且受到 COM 的严重限制。我们有机会重新架构现代化系统,我们的一个问题是关于我们数据库的可扩展性。
主要问题: 由于我们现在有 780 个表,并且我们预计在不远的将来会打破 1000 个表,对我们来说继续使用这种架构方法或创建 10 到 20 个表并将几乎所有数据存储在一个BLOB 列作为 XML?700 多张桌子中可能有 600 张是为单亲班准备的,该班有大量的孩子和孩子的孩子等等。
我的想法: 我已经编写了两种方式的程序,并且我认为将数据作为 XML 存储在 blob 中可以显着提高性能,因为不会触发 100 或 1000 次查询来插入和检索数据。根据我的经验,解析 XML 的性能比处理 1000 个表的数据库要快得多。XML 方法的另一个优点是它通常不需要模式更改。另一方面,XML 也存在性能问题。
如果您知道,请发布有关此主题的想法、事实和任何研究。所有信息都会有所帮助和赞赏。
提前致谢!