ORM用于大容量数据库

Xul*_*fee 5 orm entity-framework normalization sql-server-2008 linq-to-sql

我正在研究面向数据的新项目意味着数据量非常大(每天都在增加).所以请建议我应该使用哪种方法来实现任何障碍的欲望功能.

  • 数据库是否完全正常化?
  • 哪个ORM(linq2sql,实体框架)适合这个项目?
  • 我应该使用存储过程,数据库函数,触发器等吗?

mar*_*c_s 4

数据库是否规范化是需要了解和需要回答的!

至于 ORM:它实际上取决于数据的类型及其结构。

Linq-to-SQL 是一种非常简单的 ORM,基本上只是将表与域对象进行 1:1 映射。只要您不需要任何其他东西 - 就可以了。Linq-to-SQL 不再被积极开发,因此这可能是一个缺点。此外,存储过程支持有点有限。

实体框架(至少在 .NET 4 中)非常棒,并且是 Microsoft 当前选择的 ORM - 它正在积极开发,拥有大量支持和灵活性。它提供数据库优先、模型优先和代码优先的开发风格,支持 POCO 对象和自跟踪实体,并且与存储过程集成得很好(您可以为每个单独的 INSERT、UPDATE、DELETE 定义一个存储过程)实体,如果您愿意的话)。这将是我的第一选择。

NHibernate 是一个伟大的企业级 ORM,已经成熟并正在积极开发中 - 当然不是像 Linq-to-SQL 那样的“死胡同”。我几年前就用过它,虽然它很棒、功能强大,但它也比 EF4 难学一点(没有视觉设计师,需要更多的体力劳动、体力劳动)。如果您确实需要它的全部功能并且愿意投入必要的预先学习时间,那就太好了。

至于数据库:存储过程绝对值得研究,特别是如果您需要将某些数据库处理封装到一个好的过程中以从代码中调用。对于过多使用触发器和函数,我会相当小心和谨慎——它们有自己的位置,但不应该被过度使用,因为它们确实带来了一些问题(主要是性能问题和“可发现性”问题——很多开发人员)不要考虑可能存在的触发器,并且不会理解发生了什么)。