1

我不确定这是否是正确的 StackExchange 板来发布这个问题,但我会试一试。

我们的 ASP.NET 应用程序中有一个相当广泛的 SQL Server 后端。它包括复杂的表结构、多个视图、存储过程和函数。目前我们在内部 SQL Server 2005/2008 机器上运行它。它已经生产了好几年并且运行良好。

但是最近我们有大量的数据被添加到系统中,而庞大的数据量开始拖慢系统的速度。存储过程需要更多时间来处理数据(我们尽可能优化它们,将所有必要的索引添加到表等)

一个建议是将项目转移到“大数据”服务。可行吗?这可以用现有的 SQL Server 项目完成吗?涉及什么?现有的代码/结构会起作用还是需要进行重大的重新设计?谁将是此类举措的最佳供应商——谷歌、微软、亚马逊?

谢谢!

4

1 回答 1

4

我认为您在尝试从 SQL Server 迁移到大数据服务时将面临的第一个区别是数据的结构。

诸如图形数据库(Neo4j)、批处理(Hadoop)、文档数据库(Mongo)之类的东西……它们都有非常不同的数据模型。

大动作通常是从规范化数据到非规范化数据。这可能会非常痛苦并且需要大量工作。例如,您必须找到一种方法将 4-5 个表格合并到一个文档中。

如果您想真正向前迁移整个数据库,我会执行以下操作:

  1. 研究您要迁移到的数据模型。也许像 MySQL 这样的东西会以比 SQL Server 更便宜的方式横向扩展?也许文档数据库会使开发更容易?

  2. 一旦您了解了新模型,请在该领域尝试不同的技术。很多大数据数据库都很年轻,我建议找一个有良好社区的数据库(比如 Mongo)。

  3. 逐表检查并决定如何在新系统/数据库中对其进行建模。

  4. 找到一种方法,用新数据库中的等效想法替换存储过程、视图、函数。这可能非常困难,因为这些东西在很多大数据数据库中都不存在。您最终会将很多功能推送到应用程序层。(除非你使用 MySQL)。

我可能会推荐的是坚持使用 SQL Server。一些有助于减轻 SQL Server 负担的想法:

  1. 找出导致最痛苦的数据子集。将其移至大数据系统。

  2. 在应用层引入缓存(如果你还没有的话)。帮助缓解阅读压力。

  3. 碎片。您始终可以对 SQL Server 进行分片,这将有助于缓解读取问题/性能。

  4. 编写作业以归档未使用的旧数据。将该数据移动到另一个“脱机”的 SQL Server 实例。

于 2013-06-28T18:09:18.270 回答