在 NodeJS 应用程序内生成“UUID”和“TIMESTAMP”更好还是使用数据库内置函数更好?

在 NodeJS 应用程序内生成“UUID”和“TIMESTAMP”更好还是使用数据库内置函数更好?

我正在编写一个 TypeScript-NodeJS 应用程序,并且想要在 NodeJS 应用程序中处理 objectid和 created_at TIMESTAMP,而不是使用 MySQL 或 Cassandra 内置UUIDTIMESTAMP生成器。

1-首先,我想知道在 Web 服务器应用程序内生成值而不是让数据库生成它们是否是一个好id主意created_at

2- 其次,我想知道如果我使用数据库的内置函数(如uuid()CassandratoTimestamp(now())UUID_TO_BIN(UUID())MySQL 中的)是否会比使用 NodeJS 增加应用程序的开销/延迟uuid()图书馆?

答案1

关于MySQL 或 MariaDB:

大部分情况下,性能差异可以忽略不计。一般来说,获取一行比使用其中的任何“标准”函数都要昂贵得多。

如果您确实需要两个地方(客户端和服务器)的值,那么在一个地方计算它会更方便。

MySQL 8.0 和 MariaDB 10.7 对 UUID 进行了优化,但可能任何客户端都无法使用这项优化 — — 这项优化会重新排列 UUID 中的位,使其工作方式类似于 TIMESTAMP,从而改善各种操作的“引用局部性”。如果没有这项优化,UUID 会降低大型表的性能。由于这项优化仅适用于类型 1,因此客户端可能无法使用。

TIMESTAMP 不能被信任为唯一。因此,不应在 中 [单独] 使用它们PRIMARY KEY

当您有多个客户端独立创建 ID 时,UUID 非常有用。即便如此,通常情况下,auto_inc 也同样简单。

相关内容