dkn*_*ack 4 mysql database mongodb elasticsearch
我即将创建一个包含至少 2 亿个条目的庞大数据库。数据库需要可使用全文进行搜索,并且速度应该很快。
我的数据库从许多不同的数据源获取数据,我需要定期导入新的或更新的数据。
将我的所有数据存储在像 mysql 这样的关系数据库中,然后创建一个 nosql 文档数据库(例如 mongodb 或 elasticsearch),只是为了搜索的目的,这是一个好主意吗?或者这在可靠性和预防方面没有提供任何好处冗余信息?
我相信将主记录保存在 SQL 数据库中并将其复制到 noSQL 数据库是一种非常常见的方法。
ElasticSearch 有一个关于其弹性的持续状态页面。即使在最新版本中,ElasticSearch 也可能在许多不同的情况下丢失数据。ElasticSearch 索引结构的重大更改(例如添加分析器)需要您重新索引所有文档。如果您有其他文档来源,此过程会更安全。归根结底,ElasticSearch 的设计目的并不是一致地存储文档 - 我只会在偶尔的数据丢失不是灾难的情况下选择使用 ElasticSearch 作为主要存储。
与 ElasticSearch 不同,MongoDB 被设计为具有弹性。您应该能够在 MongoDB 中安全地存储文档。我发现尝试在 MongoDB 中进行全文搜索可能有点痛苦,至少与 ElasticSearch 相比是这样。在我看来,对于文本搜索,MongoDB相对于MySQL的FULLTEXT的唯一优势就是它是分布式的。
我们现在正在运行 ElasticSearch 和 MySQL - 其好处远远超过了额外基础设施和处理两者之间的复制的麻烦。我们之前曾尝试使用 noSQL 解决方案作为主数据存储,但结果却是灾难性的。将 ES 与 MySQL 结合运行可以让您两全其美 - SQL 中数据的一致性和安全性,以及 ES 中可扩展、有效的全文搜索。
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |