【发布时间】:2013-01-09 18:03:06
【问题描述】:
我正在开发一个已经在 Nhibernate 上运行的应用程序,但我正在考虑使用 RavenDb 来处理一些我发现很难在关系数据库上实现的用例。 (例如,不使用 EAV 的动态字段)
我已经阅读了 Ayende 在this post 上推荐的关于该主题的这篇文章。我不确定从长远来看这是否可行,以及为了获得应用程序的动态字段而必须支持 2 个数据库存在哪些常见缺陷。
【问题讨论】:
-
这些动态字段是否可查询?如果是这样,那就改变了要求。
-
@JosephDaigle +1 非常相关的问题。 Jonn,在确定一种方法之前,请多考虑一下您希望在存储这些数据后如何处理这些数据。如果您想进行复杂的查询,EAV(或其变体)可能会过度规范化。您可能必须对“瘦”表进行多次连接才能执行复杂的查询。完全动态化是绝对必要的(在您的要求中)吗?不过有趣的问题。我之前没有看过关于休眠/动态存储的 Ayende 帖子。
-
在一定程度上应该是可查询的。该数据不会用于任何域逻辑,但可能会用于报告目的。我们必须想出一些动态的东西。这是 EAV 试图解决的常见“我们不知道每个客户需要哪些其他字段,因此我们希望他们能够自行输入他们想要的内容”。虽然 EAV 有很多陷阱,但这次我什至不想尝试。
标签: nhibernate ravendb