验证数据库功能
有时,某些代码可能只适用于特定的数据库和/或版本。虽然我们尽量避免这样的代码,但有时有必要添加数据库(版本)特定的行为。
为了方便起见,我们有以下方法可供您使用:
Gitlab: Database.postgresql吗?
:返回真正的
如果正在使用PostgreSQLGitlab: Database.mysql吗?
:返回真正的
是否正在使用MySQLGitlab: 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:中间件::只读的
)。