在我工作的公司,我们有一个单一的数据库模式,但是每个客户端都使用自己的专用数据库,有一个存储客户端联系人详细信息的中央数据库,以及客户端使用的数据库,这样我们就可以连接到适当的数据库。我看过使用NHibernate碎片,但它似乎变得非常安静,看上去不完整。
有人知道这个项目的状况吗?有人在生产中用过吗?
如果它还没有被认为可以在生产中使用,那么还有什么可供选择的?这两个主要的问题似乎是:
我对2的关注是,NHibernate将如何处理第2级缓存,因为我认为它是由会话工厂控制的--而且HiLo生成器也使用我认为的会话工厂。在这种情况下,将会话附加到不同的dbs会导致问题吗?例如,我们将在两个数据库中得到一个id为2的MyCompany.Model.User类,这会导致缓存中的冲突吗?
发布于 2011-02-16 10:28:34
您可以查看Server的切分库Enzo SQL Shard。但是,如果您已经在使用NHibernate,那么代码中可能需要进行一些更改
发布于 2018-09-21 21:07:19
NHibernate碎片是最新的NHibernate API更改的最新版本,现在支持NHibrrnate的所有查询模型,包括Linq。目前不支持复杂的标量查询。
我们在生产中将它用于多租户环境,但是有一些事情需要注意。
NHibernate碎片对于每个碎片都有一个会话工厂,但是只使用一个NHibernate配置实例来生成会话工厂。这种方法可能不会很好地扩展到大量的碎片。
查询碎片并不能很好地处理分页。它可以工作,但可能需要大量的客户端处理。最好保持结果集尽可能小,并在可行的情况下将查询锁定到单个碎片。
https://stackoverflow.com/questions/3095993
复制相似问题