1.概述
通常,我们发现很难选择非关系数据库作为应用程序的主要数据存储。
在本文中,我们将探讨两个流行的非关系数据库Redis和MongoDB 。
首先,我们将快速了解Redis和MongoDB提供的功能。然后,我们将通过相互比较来讨论何时使用Redis或MongoDB。
2. Redis
Redis是一种内存数据结构存储,提供了丰富的功能集。作为缓存,消息代理和queue很有用。
2.1。特征
- 专用的命令行界面– redis-cli
- 存储键值对并支持数据结构,如列表,集合和哈希
- 最多可存储512MB的值
- 允许使用发布/订阅消息队列发布和订阅消息
- 通过提供特殊命令来管理实时地理空间数据的地理空间支持
- 允许执行LUA脚本
- 为各种客户提供流行技术
- 支持物联网和嵌入式设备
- Spring数据支持
- 使用Java客户端(例如Redisson)的Spring Cache支持
2.2。安装
我们可以从官方网站下载最新的Redis服务器并进行安装:
$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make
3. MongoDB
MongoDB是一个NoSQL文档数据库,以类似JSON的文档结构存储信息。它可用作无模式数据存储,可用于在设计和实现阶段快速更改应用程序,原型和启动。
3.1。特征
- 提供交互式命令行界面MongoDB Shell(
mongosh
)来执行管理操作和查询/更新数据 - 支持联接的基于JSON的查询结构
- 支持各种类型的搜索,例如基于地理的搜索,图形搜索和文本搜索
- 支持多文档ACID交易
- Spring数据支持
- 在社区,企业和云( MongoDB Atlas )版本中可用
- 适用于C ++,Java,Go,Python,Rust和Scala等主要技术的各种驱动程序
- 提供GUI以通过MongoDB Compass探索和操纵数据
- 使用MongoDB图表提供可视化的数据表示
- MongoDB BI连接器提供与BI和分析平台的连接
3.2。安装
我们可以下载最新的MongoDB服务器,或者,如果使用macOS,我们可以直接使用Homebrew安装社区版:
brew tap mongodb/brew
brew install [email protected]
4.何时使用Redis?
4.1。快取
Redis通过对常见项目提供亚毫秒级的响应时间,从而提供一流的缓存性能。
此外,它允许使用[EXPIRE](https://redis.io/commands/expire)
, [EXPIREAT](https://redis.io/commands/expireat)
和[PEXPIRE](https://redis.io/commands/pexpire)
类的命令来设置键的到期时间。
同时,我们可以使用[PERSIST](https://redis.io/commands/persist)
命令删除超时并保留键值对,使其非常适合缓存。
4.2。灵活的数据存储
Redis提供了各种数据结构(例如字符串,列表,集合和哈希)来决定如何存储和组织数据。因此,Redis为我们提供了数据库结构实施的完全自由。
但是,可能还需要很长时间来考虑数据库设计。同样,使用Redis构建和维护架构的内部结构也可能具有挑战性。
4.3。复杂数据存储
同样,通过列表,集合和哈希的组合,我们可以为存储实现复杂的数据结构,例如队列,数组,排序集和哈希。
4.4。聊天,队列和消息代理
Redis可以使用具有模式匹配功能的pub / sub消息队列来发布和订阅消息。因此,Redis可以支持实时聊天和社交媒体提要应用程序。
同样,我们可以使用list数据结构实现轻量级队列。此外,Redis的列表支持原子操作并提供阻止功能,使其适合于实现消息代理。
4.5。会话存储
Redis提供具有持久性功能的内存数据存储,使其成为存储和管理Web /移动应用程序会话的理想选择。
4.6。物联网和嵌入式系统
根据Redis的官方文档,从4和5开始的较新版本支持ARM处理器和Raspberry Pi 。
此外,它还可以在Andriod上运行,并努力将Android作为官方支持的平台。
因此,Redis凭借**其较小的内存占用量和较低的CPU需求而**成为物联网和嵌入式系统的理想选择**。**
4.7。实时处理
作为一种快速的内存中数据结构,我们可以将其用于实时处理应用程序。
例如,Redis可以有效地提供具有股价警报,排行榜和实时分析等功能的应用程序。
4.8。地理空间应用
Redis提供了专门构建的内存数据结构Geo Set(基于排序集),用于管理地理空间索引。此外,它提供了特定的地理命令,例如GEOADD
, GEOPOS
和GEORADIUS
以添加,读取和分析地理空间数据。
因此,我们可以使用Redis使用基于位置的功能(例如行驶时间和行驶距离)构建实时地理空间应用程序。
5.何时使用MongoDB?
5.1。动态查询
MongoDB提供了一组功能强大的查询工具。此外,它提供了多种灵活的查询方案,例如基于地理的搜索,图形搜索和文本搜索,以实现高效的数据检索。
同时,在JSON结构查询的支持下,MongoDB似乎是日常数据搜索和分析活动的更好选择。
5.2。快速更改架构
MongoDB在设计和早期实施阶段可能会有所帮助,在这些阶段中,我们需要快速更改架构。同时,它不对基础数据进行假设,并且无需进行架构即可对其进行优化。
5.3。原型和黑客马拉松
通过遵循类似JSON的文档结构, MongoDB可以进行快速原型制作,与前端渠道的快速集成以及hackathon 。
同时,它对于不想处理RDBMS复杂性的初级团队很有用。
5.4。产品目录
通过提供一个自我描述的动态模式,MongoDB使得为电子商务,资产管理和库存等目录添加产品,功能和建议变得更加容易。
我们还可以在MongoDB中通过对JSON结构化文档的一个字段或一组字段建立索引,将表达式查询用于高级搜索和分析等功能。
5.5。行动应用程序
MongoDB的JSON文档结构允许存储来自各种设备的不同类型的数据以及地理空间索引。
此外,具有本地分片的水平可伸缩性允许轻松缩放移动应用程序。因此,MongoDB可以为大量用户提供服务,处理PB级数据,并且每秒支持数十万次操作,这使其成为支持移动应用程序的理想选择。
5.6。内容丰富的应用
对于内容丰富的现代应用程序,将各种内容包含在RDBMS中并不容易。另一方面, MongoDB允许存储和提供丰富的内容,例如文本,音频和视频。
另外,我们可以使用MongoDB GridFS轻松高效地存储大于16MB的文件。它允许访问大文件的一部分,而无需将整个文件加载到内存中。
此外,它会自动在所有服务器上同步我们的文件和元数据。因此,MongoDB似乎是支持内容丰富的应用程序的更合适的选择。
5.7。游戏应用
与移动和内容丰富的应用类似,游戏也需要大规模的扩展和动态数据结构。因此,MongoDB可能是游戏应用程序的有前途的选择。
5.8。全球云数据库服务
MongoDB Atlas可在AWS,Google Cloud和Azure等多种云服务中使用。此外,借助内置的复制和故障转移机制,它提供了高度可用的分布式系统。因此,我们可以快速部署和管理数据库,并将其用作全局云数据库服务。
六,结论
在本文中,我们探讨了Redis和MongoDB作为非关系数据库的选择。
首先,我们研究了两个数据库提供的功能。然后,我们探讨了其中一种优于另一种的情况。
我们当然可以得出结论, Redis有望成为一种更好的缓存,消息代理和队列解决方案。同时,它在实时处理,地理空间应用程序和嵌入式系统中值得证明。
另一方面, MongoDB是存储类似JSON的对象的可靠选择。因此,MongoDB最适合用于原型,现代内容丰富,移动和游戏应用程序的无模式架构。
0 评论