RavenDB中每个关键生成策略的优缺点

RavenDB中每个关键生成策略的优缺点,ravendb,Ravendb,我正在将一个web应用程序的SQL数据库迁移到RavenDB,我的团队正在尝试定义什么样的密钥生成策略最适合我们。 主要的讨论点是我们是使用自然键还是代理键。所以我想知道RavenDB中每种策略的利弊 谢谢推荐的解决方案是让RavenDB为您处理这些问题。 它将生成“items/2”等内容。 首先,这些都足够好,可读性强,易于高效生成 你也可以做“users/ayende”之类的事情,但我会一直等到你有了更多的RavenDB经验 最后,对于advance stuff,您可以使用“customer

我正在将一个web应用程序的SQL数据库迁移到RavenDB,我的团队正在尝试定义什么样的密钥生成策略最适合我们。 主要的讨论点是我们是使用自然键还是代理键。所以我想知道RavenDB中每种策略的利弊


谢谢

推荐的解决方案是让RavenDB为您处理这些问题。 它将生成“items/2”等内容。 首先,这些都足够好,可读性强,易于高效生成

你也可以做“users/ayende”之类的事情,但我会一直等到你有了更多的RavenDB经验


最后,对于advance stuff,您可以使用“customers/1234/orders/8234”等键,这为高级场景提供了一些非常好的选择。

建议的解决方案是让RavenDB为您处理这些问题。 它将生成“items/2”等内容。 首先,这些都足够好,可读性强,易于高效生成

你也可以做“users/ayende”之类的事情,但我会一直等到你有了更多的RavenDB经验


最后,对于高级内容,您有“customers/1234/orders/8234”这样的密钥,这为高级场景提供了一些非常好的选择。

如果您在密钥中建立了太多的逻辑,您可能会在以后后悔,除非您非常了解您的问题域。我们在PHP中做了大量的RavenDB工作,因为没有客户端。我们使用C#进行原型设计,然后通常遵循客户机创建的内容。有时,自动多元化的结果很有趣,就像人可能是人一样。这通常并不重要,除非您直接从Javascript访问RavenDB。那么,唯一的失败就是朋友可能会质疑你的英语技能。

如果你在你的钥匙里建立了太多的逻辑,你可能会后悔,除非你很清楚你的问题领域。我们在PHP中做了大量的RavenDB工作,因为没有客户端。我们使用C#进行原型设计,然后通常遵循客户机创建的内容。有时,自动多元化的结果很有趣,就像人可能是人一样。这通常并不重要,除非您直接从Javascript访问RavenDB。那么唯一的失败就是朋友可能会质疑你的英语技能。

谢谢你的回答。但是,如果我选择一个代理键,比如hilo策略,那么就有可能使用一个更具代表性的键(比如“”)来创建指向文档“users/1”的URL?或者在这种情况下,自然密钥更合适?谢谢您的回复。但是,如果我选择一个代理键,比如hilo策略,那么就有可能使用一个更具代表性的键(比如“”)来创建指向文档“users/1”的URL?或者在这种情况下,自然键更合适?