非常新手的问题我假设..我开始玩ES和MongoDB,我试图将数据从SQL DB中移出来作为练习。 我不能不知道,我会在Mongo中存储哪些数据以及在ES中存储什么数据?我可以把所有东西存放在ES吗?假设大数据加载,如价格趋势。
答案 0 :(得分:4)
首先,MongoDB是所谓的文档存储。这种概念的关键特征是存储模式动态文档:
它不是架构,它是架构动态(或灵活架构)。要了解这个概念,您可以在这里找到一个很棒的教程:https://docs.mongodb.org/manual/data-modeling/
MongoDB是使用最广泛的文档存储 - 请参阅http://db-engines.com/en/system/MongoDB。
它有"驱动程序"对于大多数编程语言,实现快速开发。你可以很快地潜入Mongo,有很多教程和官方的Mongo大学 - 这是开发人员和DBA的一个很好的课程。
简而言之,它支持索引,聚合,过滤器,负载平衡,分片,复制(副本集)等。数据以BSON格式(http://bsonspec.org/)存储和传输。
可以在此官方参考中找到MongoDB与RDBMS概念的良好比较:https://docs.mongodb.org/manual/reference/sql-comparison/
有什么好处?它支持敏捷开发,模式可以在一段时间内发生变化,尤其是基于表单的数据,用户生成的内容,基于位置的数据,用户配置文件等。它还可以存储大型文档(每个文档最多16MB)。
现在,Elasticsearch不是一个数据库。它是一个具有一些强大聚合功能的搜索引擎(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html - 确保您查看指标,存储桶和管道聚合)。
典型的RDBSM不适用于全文搜索或结构松散的数据。 ES中的查询可以比任何数据库更快地返回结果(例如,RDBMS中的秒数与ES中的毫秒数相比)。您需要记住,关键是要很好地设计索引,并且它们将占用您的磁盘空间。
有一篇非常详细的文章比较两者在性能方面,你会发现它很有用:http://blog.quarkslab.com/mongodb-vs-elasticsearch-the-quest-of-the-holy-performances.html。
您实际上可以成功使用它们--MongoDB将存储您的数据,其中ES将用作服务层(搜索,聚合等)。
答案 1 :(得分:0)
mongodb和ES之间存在很大差异。 MongoDB是一个数据库,其设计是为了在其中存储数据并对其进行查询,而elasticsearch是一个lucene基本索引器,您只应在其中为搜索索引数据,而不应信任elastisearch。即使你可以在弹性搜索中使用store:true,也不推荐使用它,我不会依赖于重要数据。