gpt4 book ai didi

scala - SORM:如果 String 应该是 VARCHAR 还是 CLOB,我该如何管理?

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

我在文档中读到“如果字符串字段被索引,它是 VARCHAR(255),否则它是 CLOB”

如果我不想索引字段,但需要 VARCHAR 表示怎么办?例如:

case class User(login: String, passwordHash: String, firstName: String, lastName: String, email: String, country: String, city: String, aboutMe: String);

只有 login 和 email 被索引,但是 passwordHash、firstName、lastName、country、city 不应该是 CLOB,因为它是短字段,CLOB 对它们来说是压倒性的。如何将此字段标记为 VARCHAR?否则,aboutMe 可以包含长文本,因此它应该是 CLOB。如果不需要最大值(255 个字符),如何限制 VARCHAR 字段的长度?例如,passwordHash 不能超过 32 个字符(当然取决于散列方法)

谢谢。

最佳答案

CLOB 值声明在 VARCHAR 上的开销只是几个字节。 SORM 背后的理念是一切约定优于配置。这种方法是如何在 SORM 中消除样板文件的基石。由于在当今时代,额外的几千兆字节(这可能是填充数据库的这种开销的结果)对于存储空间来说几乎不是问题,因此决定采用这些设置以获得最大的兼容性。

由于 SORM 的样板方法,您无法微调 API 公开的这些内容。尽管它们可能会在未来出现,但如果问题得到显着关注,可能会作为 Entity 的附加属性出现。

如果您坚持要控制这些事情,则有一个非常简单的解决方案:您让 SORM 按照它的方式生成架构,然后使用您选择的数据库管理工具,通过更改列来微调数据库,索引或其他任何东西。在列的文本类型(CLOB、VARCHAR 等)之间切换不会造成任何问题。

关于scala - SORM:如果 String 应该是 VARCHAR 还是 CLOB,我该如何管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629837/

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