因此,我正在设计一个系统,该系统将存储文档类型的数据(即转录文档)。立即,我认为这将是一个很好的机会来利用像MongoDB这样的NOSQL实现。但是,考虑到我没有使用Mongo的经验,我想知道:在每个文档中,我都有许多元数据标签可以搜索:日期、作者、关键字等。如果我使用像MySql这样的关系型数据库,我可能会将这些项存储在一个由外键喜欢的单独表中,并对最有可能被搜索的项进行索引。然后,我可以对该表运行查询,并且只返回匹配项的全文结果(保存在磁盘读取上,而不必通过包含大量文本或BLOB信息的行)。
类似的事情在Mongo上也是可能的吗?我知道在Mongo中我可以简单地创建一个文档,它将拥有所有的元数据和实际的转录,但是如果文档是这样存储的,那么搜索元数据中的各个字段是否容易和高性能?在Mongo中需要跨文档中的各种项目执行搜索时,有没有最佳实践?或者,这种类型的场景更适合于RDBMS而不是NOSQL实现?
发布于 2014-09-08 21:22:49
您可以为mongodb文档中的单个字段添加索引。只有当索引大于内存时,基于索引的搜索性能才可能成为问题。
当您决定是否使用mongodb时,请记住没有连接操作。这必须由你的数据库层或更高的层来完成。
如果你主要关心的是搜索,有一条通往mongodb的ElasticSearch河,所以你可以在你的数据集上使用ElasticSearch。
发布于 2014-09-10 08:44:33
是的你可以创建索引和执行你想要的查询,而不是在表中有相关的实体,你有一个完整的实体,它拥有所有依赖于它的实体。
当您必须在包含数百万数据的关系数据库中提取具有多个连接的复杂报表时,这样的行为是不切实际的,因为您可能最终会损害其他应用程序。
例如:
我们有房间和学生团体。
每个房间都有许多学生,我们的关系模型如下:
SELECT * FROM ROOM R
INNER JOIN
S STUDENT
ON = S.ID R.STUDENTID想象一下,在大约20个表中包含数千个数据的情况下会发生什么?他的表演会很糟糕。
使用MongoDB时,您将执行以下操作:
db.sala.find (null)所有的房间都和学生住在一起。
MongoDB是一个执行水平扫描的数据库。
您可以阅读:
http://openmymind.net/mongodb.pdf
该网站还提供了一个交互式教程,其中使用了本书的示例。非常好。
在这里,您可以体验mongodb online并测试您的命令。
搜索try mongo db。
还可以阅读有关replicaSets的分片的内容。我相信它会极大地开阔你的视野。
您可以安装Robomongo,这是一个用于修补mongodb的图形界面。
http://robomongo.org/
https://stackoverflow.com/questions/25723987
复制相似问题