是否有计划针对Sync2的分区表自动创建 #2141

Open
opened 2022-05-10 07:06:29 +00:00 by var_rain · 1 comment

通过Sync2方法对MySQL,PostgreSQL等的常见数据库的分区表创建自动创建.目前在XORM中使用例如PG的分区表需要手动创建表并且手动处理分区创建之后才能使用Sync2进行表结构映射,直接使用Sync2会将表结构映射为普通表.

如果有计划支持分区表创建,可以适当参考一下这种方式

type Table struct {
	Id          uint64    `xorm:"pk autoincr" json:"id"`			// 主键自增
	...
	MonthOfYear time.Time `xorm:"range|list|hash|key" json:"month_of_year"` // 参考分区字段
	CreateTime  time.Time `xorm:"created" json:"create_time"` 		// 创建时间
	UpdateTime  time.Time `xorm:"updated" json:"update_time"` 		// 更新时间
	DeleteTime  time.Time `xorm:"deleted" json:"delete_time"` 		// 删除时间 软删除标记
}

其中 range|list|hash|key 分别对应分区方式,如果Sync2检查到这类TAG就可以认为该表是一个分区表而非普通表
Range 分区
List 分区
Hash 分区
Key 分区 (MySQL only)

分区参照 MonthOfYear 字段生成后缀,对应PGSQL的RAW SQL语句如下:

CREATE TABLE
IF NOT EXISTS "public"."table" (
    "id"            int8 NOT NULL,
    ...
    "month_of_year" TIMESTAMP ( 0 ),
    "create_time"   TIMESTAMP ( 6 ),
    "update_time"   TIMESTAMP ( 6 ),
    "delete_time"   TIMESTAMP ( 6 ),
    CONSTRAINT "table_pkey" PRIMARY KEY ( "id" ) 
) PARTITION BY RANGE | LIST | HASH ("month_of_year") WITH ( OIDS = FALSE );
通过Sync2方法对MySQL,PostgreSQL等的常见数据库的分区表创建自动创建.目前在XORM中使用例如PG的分区表需要手动创建表并且手动处理分区创建之后才能使用Sync2进行表结构映射,直接使用Sync2会将表结构映射为普通表. 如果有计划支持分区表创建,可以适当参考一下这种方式 ```go type Table struct { Id uint64 `xorm:"pk autoincr" json:"id"` // 主键自增 ... MonthOfYear time.Time `xorm:"range|list|hash|key" json:"month_of_year"` // 参考分区字段 CreateTime time.Time `xorm:"created" json:"create_time"` // 创建时间 UpdateTime time.Time `xorm:"updated" json:"update_time"` // 更新时间 DeleteTime time.Time `xorm:"deleted" json:"delete_time"` // 删除时间 软删除标记 } ``` 其中 ``range|list|hash|key`` 分别对应分区方式,如果Sync2检查到这类TAG就可以认为该表是一个分区表而非普通表 ``Range`` 分区 ``List`` 分区 ``Hash`` 分区 ``Key`` 分区 (MySQL only) 分区参照 ``MonthOfYear`` 字段生成后缀,对应PGSQL的RAW SQL语句如下: ```SQL CREATE TABLE IF NOT EXISTS "public"."table" ( "id" int8 NOT NULL, ... "month_of_year" TIMESTAMP ( 0 ), "create_time" TIMESTAMP ( 6 ), "update_time" TIMESTAMP ( 6 ), "delete_time" TIMESTAMP ( 6 ), CONSTRAINT "table_pkey" PRIMARY KEY ( "id" ) ) PARTITION BY RANGE | LIST | HASH ("month_of_year") WITH ( OIDS = FALSE ); ```
Author

当然以这种方式实现,Sync2仅用于分区表的自动创建与结构映射,开发者还需要自行处理分区表的分区创建策略并创建对应分区

当然以这种方式实现,Sync2仅用于分区表的自动创建与结构映射,开发者还需要自行处理分区表的分区创建策略并创建对应分区
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: xorm/xorm#2141
No description provided.