首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongo vs MySql搜索优化

Mongo vs MySql搜索优化
EN

Stack Overflow用户
提问于 2014-09-08 20:12:08
回答 2查看 582关注 0票数 0

因此,我正在设计一个系统,该系统将存储文档类型的数据(即转录文档)。立即,我认为这将是一个很好的机会来利用像MongoDB这样的NOSQL实现。但是,考虑到我没有使用Mongo的经验,我想知道:在每个文档中,我都有许多元数据标签可以搜索:日期、作者、关键字等。如果我使用像MySql这样的关系型数据库,我可能会将这些项存储在一个由外键喜欢的单独表中,并对最有可能被搜索的项进行索引。然后,我可以对该表运行查询,并且只返回匹配项的全文结果(保存在磁盘读取上,而不必通过包含大量文本或BLOB信息的行)。

类似的事情在Mongo上也是可能的吗?我知道在Mongo中我可以简单地创建一个文档,它将拥有所有的元数据和实际的转录,但是如果文档是这样存储的,那么搜索元数据中的各个字段是否容易和高性能?在Mongo中需要跨文档中的各种项目执行搜索时,有没有最佳实践?或者,这种类型的场景更适合于RDBMS而不是NOSQL实现?

EN

回答 2

Stack Overflow用户

发布于 2014-09-08 21:22:49

您可以为mongodb文档中的单个字段添加索引。只有当索引大于内存时,基于索引的搜索性能才可能成为问题。

当您决定是否使用mongodb时,请记住没有连接操作。这必须由你的数据库层或更高的层来完成。

如果你主要关心的是搜索,有一条通往mongodb的ElasticSearch河,所以你可以在你的数据集上使用ElasticSearch。

票数 0
EN

Stack Overflow用户

发布于 2014-09-10 08:44:33

是的你可以创建索引和执行你想要的查询,而不是在表中有相关的实体,你有一个完整的实体,它拥有所有依赖于它的实体。

当您必须在包含数百万数据的关系数据库中提取具有多个连接的复杂报表时,这样的行为是不切实际的,因为您可能最终会损害其他应用程序。

例如:

我们有房间和学生团体。

每个房间都有许多学生,我们的关系模型如下:

代码语言:javascript
运行
复制
SELECT * FROM ROOM R
INNER JOIN
S STUDENT
ON = S.ID R.STUDENTID

想象一下,在大约20个表中包含数千个数据的情况下会发生什么?他的表演会很糟糕。

使用MongoDB时,您将执行以下操作:

代码语言:javascript
运行
复制
db.sala.find (null)

所有的房间都和学生住在一起。

MongoDB是一个执行水平扫描的数据库。

您可以阅读:

http://openmymind.net/mongodb.pdf

该网站还提供了一个交互式教程,其中使用了本书的示例。非常好。

在这里,您可以体验mongodb online并测试您的命令。

搜索try mongo db。

还可以阅读有关replicaSets的分片的内容。我相信它会极大地开阔你的视野。

您可以安装Robomongo,这是一个用于修补mongodb的图形界面。

http://robomongo.org/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25723987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档