• 非侵入式设计, 加载插件,指定配置,既可实现分表。
    • 轻快, 非基于网络层的中间件,像 Go 一样快
    • 支持多种数据库。 PostgreSQL 已通过测试,MySQL 和 SQLite 也在路上。
    • 多种主键生成方式支持(Snowflake, PostgreSQL Sequence, 以及自定义支持)Snowflake 支持从主键中确定分表键。

    使用说明

    1. // GORM 创建示例,这会插入到 orders_02 表
    2. db.Create(&Order{UserID: 2})
    3. // sql: INSERT INTO orders_2 ...
    4. // 原生 SQL 插入示例,这会插入到 orders_03 表
    5. // 这会抛出 ErrMissingShardingKey 错误,因此此处没有提供 sharding key
    6. fmt.Println(err)
    7. // Find 方法,这会检索 order_02 表
    8. var orders []Order
    9. db.Model(&Order{}).Where("user_id", int64(2)).Find(&orders)
    10. fmt.Printf("%#v\n", orders)
    11. fmt.Printf("%#v\n", orders)
    12. // 这会抛出 ErrMissingShardingKey 错误,因为 WHERE 条件没有包含 sharding key
    13. err = db.Model(&Order{}).Where("product_id", "1").Find(&orders).Error
    14. fmt.Println(err)
    15. // Update 和 Delete 方法与创建、查询类似
    16. db.Exec("UPDATE orders SET product_id = ? WHERE user_id = ?", 2, int64(3))