Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

生產環境導入ShardingCore #183

Open
ed555009 opened this issue Aug 16, 2022 · 16 comments
Open

生產環境導入ShardingCore #183

ed555009 opened this issue Aug 16, 2022 · 16 comments

Comments

@ed555009
Copy link

ShardingCore是否可以直接導入生產環境的數據庫(已上線且有數據)?或是只能在一開始設計數據庫結構時就導入?

@xuejmnet
Copy link
Collaborator

@ed555009 当然可以,但是需要先看下文档有些地方需要注意,譬如批处理一般是三方api不是efcore的api要做一下兼容,文档有些着,当然你也可以使用双dbcontext这样就不会影响原先的

@ed555009
Copy link
Author

@xuejmnet 這個專案是使用efcore(code first)+PostgreSQL,這邊指的第三方API是指什麼呢?

@xuejmnet
Copy link
Collaborator

@xuejmnet 這個專案是使用efcore(code first)+PostgreSQL,這邊指的第三方API是指什麼呢?

efcore扩展框架比如zzz或者zack的批处理

@xuejmnet
Copy link
Collaborator

@ed555009 因为efcore的api是非常多的所以不保证所有的api都兼容如果有出现不兼容的可以提issue或者加群和我讲下都行

@xuejmnet
Copy link
Collaborator

目前来讲增删改查都是支持的包括夸分片但是不支持分片对象include不过一般也不建议分片对象使用include

@ed555009
Copy link
Author

@xuejmnet 這個專案是使用efcore(code first)+PostgreSQL,這邊指的第三方API是指什麼呢?

efcore扩展框架比如zzz或者zack的批处理

瞭解,目前只有用到FlexLabs的Upsert

@xuejmnet
Copy link
Collaborator

到时候用了的话如果有问题可以提交issue我这边看看 : )

@xuejmnet
Copy link
Collaborator

这边的建议是先进行demo级别的测试你常用的写法之类的,然后在考虑是否替换接入sharding-core

@ed555009
Copy link
Author

@xuejmnet 好的,非常感謝

@ed555009
Copy link
Author

@xuejmnet 請問 OrderVirtualTableRoute(Quick start/step.4)中有一個GetBeginTime()需要給定一個固定日期,這個日期具體該怎麼給呢?是這個數據庫首次migration的日期,還是首次導入ShardingCore的日期呢?

@xuejmnet
Copy link
Collaborator

@ed555009 这个时间就是你的数据最早的那个创建时间,因为系统会帮你创建对应的表,如果你不填写那么将无法知晓有哪些分片表,now-begintime就是系统应该有的分片表

@xuejmnet
Copy link
Collaborator

你有一堆order数据那么order的createtime最早的那个时间存入倒数库的表后缀必须包含在begintime里面不然不会生成也不会路由到这个表

@xuejmnet
Copy link
Collaborator

简单理解就是shardingcore有个list这个list就是数据库的order表的后缀集合,你的查询删除修改都是通过这个集合去获取对应的后缀,这个后缀在程序启动时会根据begintime到datetime.now之间自动创建这个集合,后续会通过定时任务自动加入后缀

@ed555009
Copy link
Author

@ed555009 这个时间就是你的数据最早的那个创建时间,因为系统会帮你创建对应的表,如果你不填写那么将无法知晓有哪些分片表,now-begintime就是系统应该有的分片表

瞭解,比如現在這個數據庫在2021/10/01創建,那麼這個GetBeginTime()日期就給2021/10/01或更早的日期,對嗎?

@ed555009
Copy link
Author

你有一堆order数据那么order的createtime最早的那个时间存入倒数库的表后缀必须包含在begintime里面不然不会生成也不会路由到这个表

那麼現有的表,需要手動重命名加上後綴嗎?

@xuejmnet
Copy link
Collaborator

两个选择
1.把历史数据迁移到新的分片规则表里
2.参考文章https://www.cnblogs.com/chen-ma/p/16020551.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants