浅谈NoSQL数据库

news/2024/11/29 21:42:00/

数据库

数据库,又称为数据管理系统,是处理的数据按照一定的方式储存在一起,能够让多个用户共享、尽可能减小冗余度的数据集合,简而言之可视为电子化的文件柜——存储电子文件的处所。

数据库有:Oracle数据库、ACCESS数据库、SQL数据库、DB2数据库、Sybase、MySQL、MariaDB、VF、SqlServer、SQLite等等。

数据库分类

  • 关系型数据库(RDBMS)

关系型数据库建立在关系模型的基础上,SQL就是关系型数据库的查询语言。

  • 非关系型数据库(NoSQL)

非关系型数据库,包含了键值型数据库、文档型数据库、搜索引擎、列表存储、图形数据库。

  • 键值型数据库(NoSQL)

键值型数据库通过 Key-Valye 方式来存储数据,Key 和 Value 可以是简单对象,也可以是复杂对象。Key 作为唯一的标识符。 比较流行的有 Redis

优点 :查询速度快;
缺点: 无法和关系型数据库一样进行条件过来,如果要进行范围查找,需要遍历所有的键,会消耗大量的计算。

文档型数据库

文档型数据库可以用来管理文档,文档作为处理信息的基本单位,相当于一个文档相当于一个记录,比较常用的有 MonogoDB

更多精彩内容,请微信搜索“前端爱好者戳我 查看 。‘

NoSQL

什么是NoSQL

对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL 数据库(意即"不仅仅是SQL")并非表格格式,其存储数据的方式与关系表不同。
NoSQL 数据库的类型因数据模型而异。
主要类型包括文档、键值、宽列和图形。它们提供了灵活的模式,可以随大量数据和高用户负载而轻松扩展。

NoSQL数据库的分类

  • 列存储(HBase)
  • 文档存储(MongoDB)
  • Key-Value存储(Redis)
  • 图存储(FlockDB)
  • 对象存储(db4o)
  • XML存储(BaseX)

为什么要用NoSQL?

  • 简单(没有原子性、一致性、隔离性等复杂规范)
  • 便于横向扩展
  • 适合超大规模数据的存储
  • 很灵活地存储复杂结构的数据(Schema Free)

每日一课:02. 说说 Node. js 有哪些全局对象?

JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。

在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。

按照 ECMAScript 的定义,满足以下条件的变量是全局变量:

  • 在最外层定义的变量;
  • 全局对象的属性;
  • 隐式定义的变量(未定义直接赋值的变量)。

当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。

需要注 意的是,在 Node.js 中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的, 而模块本身不是最外层上下文。

注意: 最好不要使用 var 定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。

Node.js v20.2.0 文档:https://nodejs.cn/api/

全局对象

将全局对象分成两类:

  • 真正的全局对象
  • 模块级别的全局变量

真正的全局对象

  • Class:Buffer: 可以处理二进制以及非Unicode编码的数据,
    • 官网地址:https://nodejs.cn/api/buffer.html
  • process:process 对象提供有关当前 Node.js 进程的信息并对其进行控制。
    • 官网地址:https://nodejs.cn/api/process.html
  • console:node:console 模块提供了一个简单的调试控制台,类似于网络浏览器提供的 JavaScript 控制台机制。
    • 官网地址:https://nodejs.cn/api/console.html#%E6%8E%A7%E5%88%B6%E5%8F%B0
  • clearInterval、setInterval:设置定时器与清除定时器
  • clearTimeout、setTimeout:设置延时器与清除延时器
  • global:全局命名空间对象,墙面讲到的process、console、setTimeout等都有放到global中。
    • 官网地址:https://nodejs.cn/api/globals.html

模块级别的全局变量

这些对象在所有模块中都可用。 以下变量可能看起来是全局的,但实际上不是。 它们只存在于模块范围内,见 模块系统文档(https://nodejs.cn/api/globals.html):

  • __dirname
  • __filename
  • exports
  • module
  • require()

此处列出的对象特定于 Node.js。

参考文档

  • https://www.runoob.com/nodejs/nodejs-global-object.html
  • https://nodejs.cn/api/
  • https://vue3js.cn/interview

http://www.ppmy.cn/news/104858.html

相关文章

【vue3】关于vue3中的数据双向绑定

Vue 3 的数据双向绑定是指将数据模型与视图之间建立起双向的关联关系,当数据发生变化时,视图会自动更新,反之亦然。Vue 3 采用了一种名为"响应式"的机制来实现数据的双向绑定。 在 Vue 3 中,你可以使用ref和reactive来…

【Linux笔记一篇搞定】

Linux笔记 文件相关 输出,查看 # more,less翻页显示文件内容 more 只能向下翻页 less 可以上下翻页 空格键翻页 上下键移动 q退出tail # 用于显示文件末尾几行 -n 指定显示的行数 -f 追踪显示文件更新(一般用于查看实时日志) -…

华为OD机试(2023.5新题) 学生方阵(java,py,c++,js)

华为OD机试真题目录:真题目录 本文章提供java、python、c、jsNode四种代码 题目描述 学校组织活动,将学生排成一个矩形方阵 请在矩形方阵中找到最大的位置相连的男生数量 这个相连位置在一个直线上,方向可以是水平的,垂直的&…

QT设置QPushButton样式

QPushButton *button new QPushButton("Button");// 设置样式表button->setStyleSheet("QPushButton {""background-color: rgb(181, 255, 184);""border-style: outset;""border-width: 2px;""border-radius: 10p…

如何在 Python 中进行循环语句控制?

在 Python 中,循环语句控制是编程中最常用的结构之一。它允许程序员重复执行一组代码,直到达到特定的条件为止。在本篇博客中,我们将介绍 Python 中的循环语句控制以及如何使用它来编写更加灵活的程序。 Python 中的循环语句 Python 中有两…

[笔记]C++并发编程实战 《三》线程间共享数据

文章目录 前言第3章 线程间共享数据3.1 共享数据带来的问题3.1.1 条件竞争3.1.2 避免恶性条件竞争 3.2 使用互斥量保护共享数据3.2.1 C中使用互斥量3.2.2 用代码来保护共享数据3.2.3 定位接口间的条件竞争选项1: 传入一个引用选项2:无异常抛出的拷贝构造…

Games104现代游戏引擎学习笔记10

Physics Actors and Shapes Actor Static:静态actor,例如挡板等 Actor Dynamic:动态actor,例如可移动的箱子 Trigger:触发器 Actor-Kinematic:违背物理原则,由设计决定,不遵循真实物理原则 反物…

python+django+vue协同过滤算法的电影推荐评分系统nzf73

用户:登录,注册,修改密码,修改个人信息,电影搜索,电影评分,电影评论, 推荐:个性化推荐电影(协同过滤),热门推荐 管理员:用户管理,电影管理,评论管理 电影是本…