Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过用NoSQL替换SQL Server重新构建ASP.NET应用程序_Asp.net_Mongodb_Nosql - Fatal编程技术网

通过用NoSQL替换SQL Server重新构建ASP.NET应用程序

通过用NoSQL替换SQL Server重新构建ASP.NET应用程序,asp.net,mongodb,nosql,Asp.net,Mongodb,Nosql,我们有一个带有SQL Server的ASP.NET应用程序,它是一个照片和视频共享网站。 照片和视频的详细信息存储在表中&文件存储在文件系统中 数据库有75个表和225个存储过程。该应用程序将在未来6个月内准备好进行生产部署 由于对时间增长的担忧,我们决定切换到NoSQL(MongoDB)数据库 我们对实现这一目标的最佳方式没有什么疑问: 使用SQL Server后端部署应用程序并稍后迁移到NoSQL是否更好 或者立即重新构建体系结构,重写/重新创建数据库、表、过程和数据层 使用MongoDB

我们有一个带有SQL Server的ASP.NET应用程序,它是一个照片和视频共享网站。 照片和视频的详细信息存储在表中&文件存储在文件系统中

数据库有75个表和225个存储过程。该应用程序将在未来6个月内准备好进行生产部署

由于对时间增长的担忧,我们决定切换到NoSQL(MongoDB)数据库

我们对实现这一目标的最佳方式没有什么疑问:

  • 使用SQL Server后端部署应用程序并稍后迁移到NoSQL是否更好

  • 或者立即重新构建体系结构,重写/重新创建数据库、表、过程和数据层

  • 使用MongoDB重新构建/重新编码有多困难?有工具或BKM吗

编辑: 我们的应用程序是Youtube+Flickr类型的网站,用户可以在其中共享带有大量评论、标签和评级(照片\视频和评论)的照片和视频

NoSQL是更好的数据库吗?移动原因:成本+读取查询速度

请帮我提些宝贵的建议


非常感谢。

您的核心问题似乎是现在是切换到MongoDB,还是在SQL上部署并在将来的版本中转到MongoDB


您似乎没有使用ORM(例如NHibernate、实体框架)。抛开其他问题不谈,如果您确信您想使用NoSQL,那么我会现在就做,而不是以后再做。除非您为数据访问集成了提供商模型,否则在基础数据访问策略建立之后更改它将是困难的。

更改的成本总是会随着项目的引入而成倍增加。这是软件工程的核心原则。你现在应该这样做


尽管如此,我对你的长期愿景表示怀疑。如果使用得当,关系数据库有很多性能。

我同意。如果只是为了避免部署后切换所需的数据迁移难题,那么现在切换更好。

这个问题提出的问题比答案多

  • 您是否在请求/响应方面对当前实施进行了基准测试
  • 为什么MongoDB没有所有可能的NoSQL数据库?(别误会,我爱Mongo,但爱和炒作不应该成为技术选择的砝码)
  • 你确定你会得到你期望的大用户群吗?你为什么这么肯定
  • 使用存储过程似乎提示您没有使用ORM?为什么不呢
  • 一般来说,我反对这些类型的重新架构。首先,您需要让您的整个团队适应Mongo如何影响开发。其次,您的ops团队需要适应如何部署和维护Mongo安装。更有可能的是,这将阻止您在您想要启动的时间线中启动

    我想说的是,你可能应该按原样启动,修复ORM部分(如果你不使用),对你的应用程序进行基准测试,对Mongo支持的应用程序原型进行基准测试,如果性能优势如此之大,足以证明重新架构的痛苦,那么就这么做


    对于后一个问题,据我所知,目前还没有任何工具能够自动或半自动地将数据库从SQL Server导入/导出到Mongo。对于MySQL,几乎没有工具可以做到这一点。

    几个月前,在ASP.NET网站的早期开发阶段,我做过这样的迁移。这是一个艰难的决定,但我可以专注于迁移。我之所以进行这种迁移,是因为我不再信任ORM,还有一些非常慢的查询,我不知道如何优化

    在编码阶段,我发现:我花了很多时间在SQL Server中的数据模型(使用实体)和所有的水管工代码上。 现在,不再需要存储过程(而是C#和Linq代码),也不再需要维护2层(代码就是模型)

    我的小经验告诉我:越早越好,但请不要误解我的意思,在迁移之前,您必须在文档中而不是在RDBMS中进行思考。这意味着您可能必须部分更改业务数据模型以正确利用MongoDB功能,否则您可能会获得糟糕的性能,而MongoDB对于糟糕的模型是无用的

    另一点是管理方面的问题。您必须快速学习Mongo DB admin才能跟上速度。即使这些工具很好,它们也完全不同于SQL Server工具

    总之,如果您确信MongoDB是您未来的数据存储和搜索数据库,
    (就我而言),阅读文档,花时间做一些概念验证。然后您可以考虑文档和负载测试您的新模型。

    我在底部添加了一个新问题。鉴于我们应用程序的性质(youtube+flickr类型的视频和照片共享),您认为NoSQL是正确的选择吗?请告诉我你的想法。谢谢。如果不了解更多关于应用程序和您的需求,就不可能说什么性能更好。如果您有时间,我建议您做一些概念验证工作来测试这两种解决方案的性能。就我个人而言,我不喜欢ORMs,当然我想指出我的意见,即以后的更改成本会成倍增加,但这里的其他一切都是100%正确的,特别是关于让开发和运营团队加速的部分。像这样的改变总是非常昂贵的。除非在编写应用程序时考虑到了可能的数据存储更改(这似乎不是),否则这是一个完整的应用程序重写。在我看来,OP现在做还是以后做都是主观的。然而,在这一点上,它是vapourware,所以理由更弱。我们没有使用ORM。该应用程序的数据库设计与sql server不同。重写的工作量将相当大。这就是为什么我问什么更好,用当前的设计发布,还是现在就咬紧牙关重新设计