gpt4 book ai didi

sql - 社交网站的 ORM 有意义吗?

转载 作者:行者123 更新时间:2023-12-02 10:38:09 26 4
gpt4 key购买 nike

我之所以问这个问题,是因为我需要知道在社交网站上不使用 ORM 是否有任何意义。

我认为 ORM 不适合社交网站的理由是:

  • 社交网站不是产品,因此您不需要支持多个数据库。您知道要使用什么数据库,并且很可能不会时不时地更改它。
  • 社交网站需要用户之间存在多对多关系,最终有时您需要编写简单的 SQL 来获取这些关系。 ORM的值(value)因此再次降低。
  • 与上一点相关,ORM 有时会在后端执行多个查询来获取其记录,这有时可能效率低下,并可能导致数据库瓶颈。最后你必须写下简单的 SQL 查询。如果我们知道无论如何我们都会编写纯 SQL,那么使用 ORM 有何意义?

这是我基于有限经验的有限理解。您在构建社交网站方面有哪些经验?我的积分有效吗?使用裸 SQL 而不担心使用 ORM 是不是很蹩脚? ORM 在构建社交网站时可以帮助哪些点?

最佳答案

使用 ORM 的值(value)在于帮助加快开发,通过自动执行将查询结果分配给对象字段的繁琐工作,并跟踪对象字段的更改,以便将它们保存到数据库。因此出现了术语“对象关系映射”。

在数据库可移植性方面,ORM 对您来说没有什么值(value),因为您只使用部署的一个数据库。

ORM 的运行时性能并不比您自己编写纯 SQL 更好,而且通常更差。正如您所提到的,查询生成的通用方法经常会犯幼稚的错误并导致冗余查询。同样,好处在于开发时间,而不是运行时效率。

使用 ORM 与不使用 ORM 似乎对可扩展性没有太大影响。其他在可扩展性方面更划算的技术包括:

  • 管理 RDBMS 中的索引。改进尽可能多的算法,从 O(n) 到 O(log2n)。
  • 智能缓存架构。
  • 通过数据库分区/分片进行水平扩展。
  • 数据库负载平衡和复制。尽可能从从属数据库读取数据,然后写入单个主数据库。对奴隶和主人进行不同的索引。
  • 使用 Sphinx 搜索等补充技术来补充 RDBMS。
  • 通过使用硬件解决问题来实现垂直扩展。 Jeff Atwood 在 StackOverflow 播客上对此发表了评论。

有些人主张使用云计算或分布式非关系数据库将数据管理转移到分布式架构。除非您获得大量用户,否则这可能不是必需的。一旦规模增长到一定程度,所有规则都会发生变化,并且您可能无法使用 RDBMS。但除非您是 Yahoo、Facebook 或 LinkedIn 的数据架构师,否则不必担心 - 云计算被过度炒作了。

人们普遍认为数据库始终是 Web 应用程序的瓶颈,但也有一种情况认为提高前端效率至少同样重要。比照。书籍 Steve Souders .

<小时/>

Julia Lerman 在编程 Entity Framework (2009),第 503 页中表明,直接使用 DataReader 与使用 Microsoft 的 LINQ to Entities 相比,查询执行成本增加了 220%。

另请参阅 Jeff Atwood 在 All Abstractions are Failed Abstractions 上的帖子,他在其中表明,使用 LINQ 的成本至少是使用普通 SQL 的两倍,即使是以简单的方式也是如此。

关于sql - 社交网站的 ORM 有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2137294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com