opensergo/opensergo-specification

[RFC] Database governance-VirtualDatabase CRD for a logical database l | 数据库治理-虚拟数据库

mlycore opened this issue · 0 comments

domain: database

Umbrella issue: #15

VirtualDatabase defines what a database looks like in the application's view.

(English version TBD...)


在数据库治理中,不管是读写分离、分库分表、影子库,还是加密、审计和访问控制等,都需要作用在一个具体的数据库之上。在这里将这样的一个逻辑的数据库称为虚拟数据库,即 VirtualDatabase。VirtualDatabase 在应用看来是一组特定的数据库访问信息,并通过绑定特定的治理策略实现相应的治理能力。以读写分离为例:

  • services: 表示一组数据库服务。对于每个数据库服务,需要的信息有:
    • name: 当前数据库服务的名称
    • databaseMySQL: 表示当前声明一个 MySQL 协议的数据库
    • readWriteSplitting: 表示当前数据库需要的读写分离策略(可选)

一个基础的 YAML 示例:

apiVersion: database.opensergo.io/v1alpha1
kind: VirtualDatabase
metadata:
  name: readwrite_splitting_db
spec:
  services:
  - name: readwrite_splitting_db
    databaseMySQL:
      db: readwrite_splitting_db
      host: localhost
      port: 3306
      user: root
      password: root
    readWriteSplitting: "readwrite"  # 声明所需要的读写分离策略