验证数据库功能

有时,某些代码可能只适用于特定的数据库和/或版本。虽然我们尽量避免这样的代码,但有时有必要添加数据库(版本)特定的行为。

为了方便起见,我们有以下方法可供您使用:

  • Gitlab: Database.postgresql吗?:返回真正的如果正在使用PostgreSQL
  • Gitlab: Database.mysql吗?:返回真正的是否正在使用MySQL
  • Gitlab: Database.version:以字符串形式返回PostgreSQL版本号,格式为X.Y.Z。此方法不适用于MySQL

这允许你编写这样的代码:

如果Gitlab::数据库postgresql吗?如果Gitlab::数据库版本to_f> =9.6run_really_fast_query其他的run_fast_query结束其他的run_query结束

只读数据库

数据库支持只读模式。在这种情况下,我们必须确保所有GET请求都不会尝试对数据库进行任何写操作。如果其中一个请求想要写入数据库,则需要将其包装在Gitlab: Database.read_only吗?Gitlab: Database.read_write吗?以确保只读数据库不会发生这种情况。

我们有一个Rails中间件来过滤任何潜在的写入操作(CRUD的CUD操作),并防止用户尝试更新数据库而得到500错误(参见Gitlab:中间件::只读的)。

Baidu
map