草庐IT

mongodb - 从 Entity Framework 移植到 MongoDB

coder 2023-05-05 原文

我计划从 Entity Framework 4.0 移植到 MongoDb。由于该项目具有社交网络功能,因此可以最大限度地减少影响的最佳实践是什么,因此,维护一个复杂的关系数据库。因此,如果我们使用,性能应该是一个问题 关系数据库。

我们在项目中使用了域层(使用 POCO)、存储库模式和 DTO 映射。另外, 决定的优点和缺点是什么?同时,它对我的​​领域层实现有何影响?

最佳答案

如果您想“最小化影响”,您需要在 MongoDB 中创建一个数据库,就像您在 SQL 中创建的那样。由于数据库中没有连接,您需要进行多次读取才能完成查询。这本身并不算太糟糕,因为 MongoDB 非常快,但显然它还有其他问题(并发性等)。

但是,如果您想完全转向 NOSQL 的做事方式,您可能无法“最小化影响”,您需要对以下方面进行重大更改您存储内容的方式、访问内容的方式以及更新内容的方式。

存储:您可能会在数据库中创建非规范化的文档,并且比“模型”更接近“ View 模型”。例如,您可以将子记录计数存储在父记录中,这样您就可以显示它而无需加载或计算它们。

访问权限:您最终可能会使用 Map-Reduce 对您的数据库进行一些查询,这与传统查询截然不同。

更新:您的更新方法很可能会有所不同,以便利用许多细粒度的 MongoDB 更新功能,例如 $inc。您可以提供一个更细粒度的 Ajax 回调来更新单个值,而不是回发一些大型 View 模型,然后将其应用于您的模型,然后更新数据库。查看 CQRS,了解有关如何考虑更新与查询模型的更多想法。

关于mongodb - 从 Entity Framework 移植到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708877/

有关mongodb - 从 Entity Framework 移植到 MongoDB的更多相关文章

  1. ruby-on-rails - 可移植 Ruby on Rails 环境 - 2

    我给自己买了一个新的8gigUSBkey,我正在寻找一个合适的解决方案来拥有一个可移植RoR环境来学习。我在谷歌上搜索了一下,发现了一些可能性,但我很想听听一些现实生活中的经历和意见。谢谢! 最佳答案 我喜欢InstantRails,非常容易使用,无需安装程序,也不会修改您的系统环境。 关于ruby-on-rails-可移植RubyonRails环境,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

  2. ruby - 如何在 Ruby 中构建可移植的绝对路径? - 2

    让我们假设一个脚本需要访问一个目录,比如在“任意”操作系统上的/some/where/abc。在Ruby中构建路径有几个选项:File.join('','some','where','abc')File.absolute_path("some#{File::SEPARATOR}where#{File::SEPARATOR}abc",File::SEPARATOR)标准API中的路径名我相信第一个解决方案足够清晰,但符合惯用语。根据我的经验,一些代码审查会要求评论来解释它的作用......问题有没有更好的方法来构建绝对路径是Ruby,其中更好的意思是“完成工作并为自己说话”?

  3. ruby-on-rails - 在一个 Rails 应用程序中使用 PostgreSQL 的 MongoDB - 2

    我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多

  4. ruby - 使用 mongodb/mongoid 运行时更改模型 - 2

    我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序

  5. ruby-on-rails - 我如何从 Ruby 代码连接到 mongodb? - 2

    我如何从Ruby代码连接到mongodb? 最佳答案 首先,您必须安装MongoDbgem:geminstallmongo然后运行代码:require'rubygems'#notnecessaryforRuby1.9require'mongo'db=Mongo::Connection.new.db("mydb")#ORdb=Mongo::Connection.new("localhost").db("mydb")#ORdb=Mongo::Connection.new("localhost",27017).db("mydb")

  6. ruby - MongoDB:无法从 BSON 类型 EOO 转换为 Date - 2

    我正在尝试使用聚合框架(使用ruby​​)并像这样投影日期:db['requests'].aggregate([{"$project"=>{_id:0,method:'$method',user:'$user',year:{'$year'=>'$timestamp'}}}])文档是这样的:{_id:ObjectId("5177d7d7df26358289da7dfd"),timestamp:ISODate("2013-04-12T03:58:05+00:00"),method:"POST",status:"200",inputsize:"874",outputsize:"4981",u

  7. ruby - 在 Ruby 中从 MongoDB 中检索字段的子集 - 2

    我试图通过在Ruby中进行的查询从MongoDB获取字段的子集,但它似乎不起作用。它不返回任何结果这是ruby代码:coll.find("title"=>'Halo',:fields=>["title","isrc"])#thisdoesn'twork如果我删除字段散列,它会工作,返回包含所有字段的结果coll.find("title"=>'Halo')#thisworks查看mongodb控制台,第一个查询在mongodb服务器上结束,如下所示:{title:"Halo",fields:["title","isrc"]}如果我尝试从mongo客户端控制台进行查询,它会工作,我会得到结

  8. ruby - 将 Ruby 打包成可移植的可执行文件 - 2

    长期以来,我一直在努力寻找一个好的解决方案:是否有可靠的方法将ruby​​安装到可在该平台上移植的文件夹中?我想要一个文件夹,我可以轻松地将其复制到我正在制作的发行版中,这样我就可以“随时随地”拥有一个ruby​​环境。如果我需要编译源代码和其他东西,那很好,只要我最终安装了可移植的ruby​​安装即可。我找到了一些试图解决这个问题的资源,但没有一个让我满意。PortableRubyonRailsenvironmenthttp://hcettech.blogspot.pt/2012/05/windows-portable-rails-development.html对我来说,这是Rub

  9. SE5_基于YOLO3D的目标检测算法移植与测试 - 2

    本文档适用于SOPHGO(算能)BM1684-SE5及对应通用云开发空间,主要内容:注意:由于SOPHGOSE5微服务器的CPU是基于ARM架构,部分步骤将在基于x86架构CPU的开发环境中完成初始化开发环境(基于x86架构CPU的开发环境中完成)YOLO3D目标检测算法模型转换(基于x86架构CPU的开发环境中完成)YOLO3D模型推理测试(处理后的YOLO3D项目文件将被拷贝至SOPHGOSE5微服务器上推理测试)1.初始化开发环境(基于x86架构CPU的开发环境中完成)1.1初始化开发环境(若wget后的地址不可用,请前往算能官网下载Docker镜像及SDK)#切换成root权限sudo

  10. Linux驱动之系统移植----uboot移植(有设备树版本),完整移植. - 2

    uboot版本:uboot2020.04开发板:100ask_imx6ull_pro拿到官方uboot后第一步先编译烧写测试,查看哪些驱动可用,哪些不可用.根据开发板厂商提供的资料:使用mx6ull_14x14_evk_defconfig配置进行修改编译完成后将uboot设备树以及uboot.imx烧写到开发板中运行CPU:i.MX6ULLrev1.1792MHz(runningat396MHz)CPU:Industrialtemperaturegrade(-40Cto105C)at40CResetcause:PORModel:i.MX6ULL14x14EVKBoardBoard:MX6ULL

随机推荐