UpT*_*eek 2 nhibernate database-design hilo
我从ac#/ NHibnernate的角度问这个问题,但它通常适用.令人担忧的是,HiLo策略非常快,但是例如低记录计数表(例如用户)从同一组id共享作为高记录计数表(例如注释).因此,通过其他策略,您可以更快地获得更高的数字.那么人们推荐什么?
代码方:int/uint/long/ulong?
DBSide:int/bigint?
我的感觉是长期和bigingts,但想要理智检查:)
补充迭戈的答案..
您可以table在每个生成器上设置参数,但IMO会导致不必要数量的表只是为了保存ID.
我可能建议每个实体使用一行(在同一个表中).使用可选参数,您可以配置HiLo算法,它将仅锁定必要的行.每个实体都有不同的种子.在FluentNH中,它将类似于:
Id(x => x.Id, "Id")
.GeneratedBy.HiLo("IdsTable", "id", "20",
p => p.AddParam("where", "table = 'mappedent'"));
Run Code Online (Sandbox Code Playgroud)
尽管如此,您还可以避免使用where额外的参数,只需设置不同的列(即使在DB中也可以使用不同的ID类型).但是,如果你有大量的实体(因为DBs列nr限制),它会打扰你.还要记住,每个请求ID范围的实体都会锁定所有其他实体,在某些情况下会导致死锁.
希望这可以帮助!
问候,
菲利佩
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |