NoSQL到底怎么用?(下)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: NoSQL到底怎么用?

将商品名称做分词,然后建立起分词和商品ID的对应关系:

image.png


用户搜索电冰箱,就可以给他展示商品ID为1和3的两件商品。

而Elasticsearch提供了分布式的全文搜索服务,这在传统的关系型数据库中使用SQL语句是很难实现。所以NoSQL可以在某些业务场景下代替传统数据库提供数据存储服务。


提升扩展性

电商系统增加评论系统,评估比较乐观,觉得电商系统评论量级不会增长很快,就简单分了8个库,每个库分16张表。


但是评论系统上线之后,存储量级增长异常迅猛,不得不拆分更多库表,而数据也要重新迁移到新库表。


这时,你考虑是否可以考虑使用NoSQL数据库来彻底解决扩展性的问题,经过调研你发现它们在设计之初就考虑到了分布式和大数据存储的场景,比如像MongoDB就有三个扩展性方面的特性。



Replica

副本集,可理解为主从分离,也就是通过将数据拷贝成多份来保证当主挂掉后数据不会丢失。同时呢,Replica还可以分担读请求。Replica中有主节点来承担写请求,并且把对数据变动记录到oplog里(类似于binlog);从节点接收到oplog后就会修改自身的数据以保持和主节点的一致。一旦主节点挂掉,MongoDB会从从节点中选取一个节点成为主节点,可以继续提供写数据服务。


Shard


分片,分库分表,即将数据按照某种规则拆分成多份,存储在不同的机器上。MongoDB的Sharding特性一般需要三个角色来支持,一个是Shard Server,它是实际存储数据的节点,是一个独立的Mongod进程;二是Config Server,也是一组Mongod进程,主要存储一些元信息,比如说哪些分片存储了哪些数据等;最后是Route Server,它不实际存储数据,仅仅作为路由使用,它从Config Server中获取元信息后,将请求路由到正确的Shard Server中。



负载均衡


当MongoDB发现Shard之间数据分布不均匀,会启动Balancer进程对数据做重新的分配,最终让不同Shard Server的数据可以尽量的均衡。当我们的Shard Server存储空间不足需要扩容时,数据会自动被移动到新的Shard Server上,减少了数据迁移和验证的成本。


NoSQL内置的扩展性可以让我们不再需要对数据库做分库分表和主从分离,也是对传统数据库一个良好的补充。

课程小结


1.在性能方面,NoSQL数据库使用一些算法将对磁盘的随机写转换成顺序写,提升了写的性能;

2.在某些场景下,比如全文搜索功能,关系型数据库并不能高效地支持,需要NoSQL数据库的支持;

3.在扩展性方面,NoSQL数据库天生支持分布式,支持数据冗余和数据分片的特性。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
|
存储 监控 NoSQL
九大核心NoSQL数据库及使用场景详解
【10月更文挑战第6天】在当今大数据与云计算飞速发展的时代,NoSQL数据库以其灵活的数据模型、可扩展性和高性能,成为了众多应用场景下的首选。本文将为您详细介绍九大核心NoSQL数据库及其典型使用场景,帮助您在工作和学习中更好地选择和应用。
100 3
|
3月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
1月前
|
存储 缓存 NoSQL
常见的 NoSQL 数据库有哪些?
常见的 NoSQL 数据库有哪些?
51 2
|
2月前
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
142 2
|
2月前
|
存储 SQL NoSQL
数据库技术深度探索:从关系型到NoSQL的演变
【10月更文挑战第21天】数据库技术深度探索:从关系型到NoSQL的演变
91 1
|
2月前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
33 2
|
2月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
36 1
|
2月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
3月前
|
存储 NoSQL 关系型数据库
NoSQL 数据库的优缺点?
NoSQL 数据库的优缺点?
166 4
|
3月前
|
存储 SQL NoSQL
NoSQL数据库
NoSQL数据库
92 4