【发布时间】:2013-05-30 03:30:46
【问题描述】:
我在 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 也存在性能问题。
如果您知道,请发布有关此主题的想法、事实和任何研究。所有信息都会有所帮助和赞赏。
提前致谢!
【问题讨论】:
-
我认为将数据存储在
BLOB中作为XML是一个糟糕的想法,但我坚信数据规范化。如果不了解如何您的数据被访问的细节,这个问题是无法回答的 - 读取优化?写优化?等等等等。 -
wagregg,很明显,如果您没有大型数据系统的经验,请不要发帖。你的帖子比我的帖子更具建设性。谢谢
-
Madbreaks,它将被优化阅读。它可以通过调用单个选择来填充对象来更快地读取,但写入需要为每条记录编写一个插入语句。有数百个数据对象。当从数据库中拉出一个时,它会通过所有的children、children的children等级联下来,并缓存来自数百个表的所有数据。这需要大量的操作。
-
让我补充一点,700 多张桌子中可能有 600 张是为一个有大量孩子和孩子的孩子等等的单亲类。那个巨大的对象是我们可能会转换为 XML 的部分。
标签: sql-server database orm mfc large-data