IT入门知识第四部分《数据库》(4/10)(二)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: IT入门知识第四部分《数据库》(4/10)(二)

IT入门知识第四部分《数据库》(4/10)(一):https://developer.aliyun.com/article/1562518


PostgreSQL 为什么使用它

PostgreSQL 附带了许多功能,旨在帮助开发人员构建应用程序、管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集有多大或多小。除了免费和开源之外,PostgreSQL 还具有高度可扩展性。例如,您可以定义自己的数据类型、构建自定义函数,甚至可以用不同的编程语言编写代码,而无需重新编译数据库!


PostgreSQL 尝试遵守SQL 标准,这种一致性不会与传统功能相矛盾,也不会导致糟糕的架构决策。支持 SQL 标准所需的许多功能,尽管有时语法或功能略有不同。随着时间的推移,预计将进一步实现一致性。截至 2023 年 9 月发布的第 16 版,PostgreSQL 至少符合 SQL:2023 Core 一致性的 179 项强制功能中的 170 项。截至撰写本文时,还没有关系数据库完全符合该标准。


以下是 PostgreSQL 中各种功能的完整列表,每个主要版本中都会添加更多功能:


  • 数据类型
  • 基元:整数、数字、字符串、布尔值
  • 结构化:日期/时间、数组、范围/多范围、UUID
  • 文档:JSON/JSONB、XML、键值(Hstore)
  • 几何:点、线、圆、多边形
  • 定制:复合、定制类型
  • 数据的完整性
  • 唯一,不为空
  • 主键
  • 外键
  • 排除约束
  • 显式锁、咨询锁
  • 并发、性能
  • 索引:B 树、多列、表达式、部分
  • 高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
  • 复杂的查询规划器/优化器、仅索引扫描、多列统计
  • 事务、嵌套事务(通过保存点)
  • 多版本并发控制(MVCC)
  • 读取查询的并行化和构建 B 树索引
  • 表分区
  • SQL 标准中定义的所有事务隔离级别,包括 Serialized
  • 表达式的即时 (JIT) 编译
  • 可靠性、灾难恢复
  • 预写日志记录 (WAL)
  • 复制:异步、同步、逻辑
  • 时间点恢复 (PITR)、活动备用
  • 表空间
  • 安全
  • 身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
  • 强大的访问控制系统
  • 列级和行级安全性
  • 使用证书和附加方法进行多重身份验证

可扩展性

  • 存储函数和过程
  • 过程语言:PL/pgSQL、Perl、Python 和 Tcl。通过扩展还可以使用其他语言,例如 Java、JavaScript (V8)、R、Lua 和 Rust
  • SQL/JSON 构造函数和路径表达式
  • 外部数据包装器:使用标准 SQL 接口连接到其他数据库或流
  • 可定制的表存储接口
  • 许多提供附加功能的扩展,包括 PostGIS
  • 国际化、文本搜索
  • 支持国际字符集,例如通过 ICU 校对
  • 不区分大小写和不区分重音的排序规则
  • 全文检索

2.3 Oracle

Oracle 数据库的商业特性

Oracle数据库是一个领先的商业RDBMS,以其高性能、可靠性和高级功能而闻名。Oracle数据库由Oracle公司开发和支持。


商业特性:

  • 高级安全性。
  • 强大的分析和数据处理能力。
  • 广泛的工具和应用程序集成。

Oracle 的体系结构

  • 实例: 包括内存结构(SGA)和数据库进程。
  • 数据库: 物理文件的集合,包括数据文件、控制文件和重做日志文件。
  • 模式: 数据库中的逻辑结构,如表、视图、索引和存储过程。

Oracle 的管理工具SQL*Plus: 一个命令行工具,用于执行SQL语句和PL/SQL块。

Oracle Enterprise Manager: 一个图形界面工具,用于数据库的监控和管理。

通过这些工具和特性,Oracle数据库为企业提供了强大的数据管理解决方案。虽然它是商业软件,但许多企业仍然选择Oracle数据库,因为它提供了广泛的功能和企业级的支持。

3. 非关系型数据库

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。


非关系型数据库,通常称为NoSQL数据库,是为了满足大规模数据集合的存储和检索需求而设计的,它们不依赖传统的关系模型。NoSQL数据库提供了多样化的数据模型和高可扩展性,适用于大数据和高并发的应用场景。

3.1 MongoDB

MongoDB 的文档存储模型

MongoDB是一种基于文档的数据库,它存储BSON(二进制JSON)文档。每个文档可以包含多种数据类型,如字符串、数字、数组、对象等。

MongoDB官网:https://www.mongodb.com/

特点:

  • 高性能:由于其数据结构的灵活性,MongoDB在处理复杂查询时表现出高性能。
  • 高可用性:通过副本集(Replica Sets)实现,副本集是一组维护相同数据集的MongoDB服务器。
  • 易扩展性:通过分片(Sharding)实现水平扩展,分布数据跨多个服务器。

MongoDB 的基本操作

  • 创建文档(CRUD中的Create):
db.collection.insertOne({
  name: "John Doe",
  age: 30,
  address: {
    street: "123 Main St",
    city: "Anytown"
  }
});
  • 读取文档(Read):
db.collection.find({ name: "John Doe" });
  • 更新文档(Update):
db.collection.updateOne({ name: "John Doe" }, { $set: { age: 31 } });
  • 删除文档(Delete):
db.collection.deleteOne({ name: "John Doe" });
  • 索引:
db.collection.createIndex({ name: 1 });
  • 聚合:
db.collection.aggregate([
  { $match: { age: { $gte: 18 } } },
  { $group: { _id: "$age", count: { $sum: 1 } } }
]);

3.2 Cassandra

Cassandra 的分布式架构

Cassandra是一个分布式NoSQL数据库,设计用于处理大量数据跨多个服务器。

Cassandra 的数据模型

  • 列族:类似于关系型数据库中的表。
  • :列族中的字段。
  • 超列:列的集合(可选)。

Cassandra 的数据复制和分区

  • 数据复制:通过副本因子来控制,确保数据的高可用性。
  • 数据分区:使用一致性哈希将数据分布到不同的节点。

3.3 Redis

Redis 的内存数据存储特性

Redis是一个基于内存的数据库,提供极快的读写速度。它通常用作数据缓存或消息队列系统。

Redis官网:https://redis.io/

Redis 的数据结构

  • 字符串(Strings)
  • 哈希(Hashes)
  • 列表(Lists)
  • 集合(Sets)
  • 有序集合(Sorted Sets)

Redis 的持久化和复制机制

  • 持久化:Redis可以将内存中的数据保存到磁盘,防止数据丢失。
  • 复制:支持主从复制,提高数据的可用性和可扩展性。


通过这些NoSQL数据库,开发者可以根据应用的具体需求选择最合适的数据存储解决方案。每种NoSQL数据库都有其独特的特性和适用场景,理解这些特性有助于在大数据时代做出更合理的技术选择。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
19天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
38 4
SpringBoot入门(4) - 添加内存数据库H2
|
21天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
29 2
SpringBoot入门(4) - 添加内存数据库H2
|
14天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
54 13
|
8天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
23 4
|
22天前
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
80 6
|
24天前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
24天前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
80 1