database - 我可以使用 RavenDB (NoSQL) 还是应该只使用 MySQL (RDBMS)?

标签 database database-design nosql ravendb

我开始使用 ASP.NET MVC 3 通用管理系统(项目管理是第一个组件)。现在我已经阅读了一些关于 RavenDB 的资料,它听起来很有趣。我最喜欢的事情之一是我不需要 ORM 上的任何类型来处理来自数据库的数据。这将使我的代码更加简洁和快速。然而,在过去 6 年多的时间里,我一直专门使用 MySQL,所以我倾向于将我的数据与我的数据联系起来。有几件事似乎 NoSQL 不适合。我想把这些东西丢在那里,也许这些问题可以在 NoSQL 解决方案中处理,我只是认为太相关了(话又说回来,也许这个项目应该用 MySQL 来完成)。这些是我正在考虑的问题:

  1. 唯一标识符:我希望能够为很多东西设置唯一标识符。对于项目之类的东西,名称应该是唯一的并且可以使用它,但是当涉及到项目下的任务时,标题可能不是唯一的,这是我会使用 quto-increment 字段的地方,但我可以在 RavenDB 中这样做(据我所知)

  2. 链接:对于像状态和类型这样的字段,我只会使用带有外键的链接。现在对于一对多关系,我可以只使用文本而不是尝试链接外键(NoSQL 中没有外键),而是使用多对多链接,这是一个问题。例如,我打算有一个标签系统(就像这里一样),其中大多数项目可以附加 1 到多个标签,然后我可以在这些标签上搜索项目。有没有办法在 NoSQL 中做到这一点?

RDBMS 真的是这里工作的最佳工具,还是我只是没有正确地考虑“NoSQL”方式,我可以用 NoSQL (RavenDB) 来完成它?

最佳答案

我知道这是一个旧帖子。也许这些文档在最初编写时并不那么好。但作为引用,以防其他人在这里绊倒:

  1. Raven 默认带有 HiLo 文档 id 生成策略。存储新文档而不自己指定 id 将获得一个自动递增的 id,例如“projects/1”、“projects/2”等。阅读更多 here .

  2. 有关处理文档关系的不同方法的最佳指南是 here在文档中。对于您描述的情况,您根本不需要单独的文档。您可以简单地将标签名称的字符串数组嵌入到每个项目中。文档不是平面的,它们可以结构化。是的,您仍然可以查询它们。

希望您在最初的帖子后已经自行发现了这一点。

关于database - 我可以使用 RavenDB (NoSQL) 还是应该只使用 MySQL (RDBMS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022418/

相关文章:

database-design - Redis 是这个模型的正确选择吗

sql-server - 有没有办法链接/连接两个 MS SQL 数据库?

nosql - RavenDB 中的关系数据库删除概念

node.js - Actor 错误: Cast to string failed for value

nosql - 如何在 couchbase 查询中按 json 对象的值对文档进行排序?

java - 用于在java桌面应用程序中存储字符串的本地数据库,当前使用MongoDB

database - 如何使用 Perl 使我的数据库处于版本控制之下?

arrays - JSONB 会使 PostgreSQL 数组变得无用吗?

mysql - 使用 INNER JOIN 和 WHERE 的 SQL 查询

java - Google App Engine (Java) 中的持久性 - 访问应用程序外部的数据