gpt4 book ai didi

sql - 在 Play with Scala 中编写 SQL?

转载 作者:行者123 更新时间:2023-12-01 12:49:27 25 4
gpt4 key购买 nike

我正在查看 Play 框架的文档,它看起来好像 SQL is being written in the framework .

来自 Rails,我知道这是一种不好的做法。主要是因为开发人员需要在扩展时切换数据库。

Play 中有哪些实践允许开发人员实现约定并使用数据库而无需对 SQL 进行硬编码?

最佳答案

Play 的一个特性/缺陷(取决于您问的是谁)是没有 ORM。 (ORM 是对象关系映射器/映射;它是 Rails、Django 等为您编写 SQL 的部分。)

  • Pro-ORM:您不必编写任何 SQL。

    • 易用性:一些不习惯 SQL 的开发人员会发现这更容易。

    • 代码重用:表格通常基于您的类;代码重复更少。

    • 可移植性:ORM 尝试消除 DMBS 供应商之间的任何差异。

  • 无 ORM:您可以编写自己的 SQL,而不依赖于看不见的 ORM(黑色)魔法。

    • 绩效:我在一家生产高流量网络应用程序的公司工作。面对数以百万计的访问者,您需要确切知道您正在运行什么查询,以及确切您正在使用什么索引。否则,在开发中运行良好的代码将导致生产崩溃。

    • 灵 active :ORM 通常不具备像 SQL 这样的特定领域语言所具有的完整表达范围。一些更复杂的子选择和聚合查询将很难/不可能用 ORM 编写。

    • 虽然您可能认为“开发人员需要在扩展时切换数据库”,但如果您扩展到足以更改 DBMS,更改查询语法将是您的可扩展性问题中最少的 .通常,查询本身必须重写以使用分片等,此时 ORM 已失效。

这是一种权衡;根据我的经验,它通常不支持 ORM。

参见 Anorm Play 对此决定的理由页面:

You don’t need another DSL to access relational databases

SQL is already the best DSL for accessing relational databases. We don’t need to invent something new.

...


Play 开发者通常会编写自己的 SQL(与他们用其他语言(如 HTML)编写的方式大致相同),使用 Anorm , 并遵循常见的 SQL 约定。

如果需要便携性,请仅使用 ANSI SQL (没有特定于供应商的功能)。它通常得到很好的支持。


编辑:或者,如果您真的思想开放,您可能会看看 NoSQL 数据库,例如 Mongo。它们本质上是基于对象的,因此面向对象的 Ruby/Python/Scala 自然可以用作 API。

关于sql - 在 Play with Scala 中编写 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860541/

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