将SQL Server项目移动到大数据?

时间:2013-06-28 14:38:23

标签: sql-server bigdata

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:4)

我认为您在尝试从SQL Server迁移到大数据服务时将面临的首要差异是数据结构。

诸如图形数据库(Neo4j),批处理(Hadoop),文档数据库(Mongo)之类的东西......所有这些都有非常不同的数据模型。

重大举措通常是从规范化数据转向非规范化数据。这可能是非常痛苦和很多工作。例如,您必须找到将4-5个表合并为一个文档的方法。

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

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

  2. 了解新模型后,请尝试该空间中的不同技术。这么多大数据数据库都很年轻,我建议找一个有良好社区的人(比如Mongo)。

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

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

  5. 我建议的是坚持使用SQL Server。一些有助于减轻SQL Server负担的想法:

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

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

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

    4. 写入作业以存档未使用的旧数据。将该数据移动到另一个“离线”的SQL Server实例。