唐山哪里有建设网站的怎么做品牌的官方网站
唐山哪里有建设网站的,怎么做品牌的官方网站,石家庄开始二次感染了吗,环保网站 中企动力建设前些天发现了一个人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;最重要的屌图甚多#xff0c;忍不住分享一下给大家。点击跳转到网站。
概念性——数据库简介
介绍
数据对于当今许多应用程序和网站的运行至关重要。对热门视频的评论、多人游戏中分…前些天发现了一个人工智能学习网站通俗易懂风趣幽默最重要的屌图甚多忍不住分享一下给大家。点击跳转到网站。
概念性——数据库简介
介绍
数据对于当今许多应用程序和网站的运行至关重要。对热门视频的评论、多人游戏中分数的变化以及我们在最喜欢的在线商店的购物车中留下的物品都是存储在数据库中某处的信息。
这篇概念性文章介绍了许多数据库主题。它简要概述了云计算背景下的数据库并重点介绍了数据库设计和功能的一些核心概念。它还包含整个相关概念和程序教程的链接。
什么是数据库
从广义上讲数据库是任何逻辑建模的信息集合。数据库不一定必须存储在计算机上诸如医院中的一堆患者档案、名片盒中的一组联系人或装满旧发票的文件柜等都可以作为数据库的示例。
在网站和应用程序中当人们提到“数据库”时他们通常指的是允许他们与数据库交互的计算机程序。这些程序更正式地称为数据库管理系统(DBMS)通常安装在虚拟专用服务器上并进行远程访问。
Redis、MariaDB 和 PostgreSQL 是开源 DBMS 的几个示例但目前有许多不同的可用。不同的 DBMS 通常有自己独特的功能和相关的工具集但它们通常分为两类之一关系数据库和非关系数据库。
关系数据库
自 20 世纪 70 年代以来大多数 DBMS 都是围绕关系模型设计的。关系模型中最基本的元素是关系用户和现代 关系 DBMSRDBMS 或关系数据库将其识别为表。关系是一组元组或表中的行每个元组共享一组属性或列 我们可以将每个元组视为表中包含的任何类型的人、对象、事件或关联的唯一实例。这些实例可能是公司的员工、在线企业的销售或医学实验室的测试结果。例如在保存学校教师员工记录的表中元组可能具有name、subjects、start_date等属性。
在关系模型中每个表至少包含一列可用于唯一标识每一行称为主键。以存储学校教师员工记录的表为例数据库管理员可以创建一个名为employee_ID 的主键列其值自动递增。这将允许 DBMS 跟踪每条记录并临时返回它们。反过来这意味着记录没有定义的逻辑顺序并且用户能够以任何顺序或通过他们希望的任何过滤器返回数据。
如果我们有两个表想要相互关联一种方法是使用外键。外键本质上是一个表“父”表主键的副本插入到另一个表“子”的列中。以下示例突出显示了两个表之间的关系一个用于记录有关公司员工的信息另一个用于跟踪公司的销售情况。在本例中表的主键EMPLOYEES用作表的外键SALES 关系模型的结构元素有助于以有组织的方式存储数据但存储数据只有在可以检索数据时才有用。要从 RDBMS 检索信息我们可以发出查询或对一组信息的结构化请求。大多数关系数据库使用一种称为结构化查询语言的语言更广为人知的名称是SQL非正式发音如“sequel”来管理和查询数据。SQL 允许我们使用各种子句、谓词和表达式来过滤和操作查询结果从而使我们可以很好地控制结果集中出现的数据。
目前有许多开源 RDBMS可用包括
MySQLMariaDBPostgreSQLSQLite
非关系数据库
如今大多数应用程序仍然使用关系模型来存储和组织数据。然而关系模型并不能满足所有应用程序的需求。例如水平扩展关系数据库可能很困难尽管它们非常适合存储结构化数据但对于存储非结构化数据却不太有用。
关系模型的这些和其他限制导致了替代方案的开发。这些数据库模型通常统称为非关系数据库。由于这些替代模型通常不实现 SQL 来定义或查询数据因此它们有时也称为NoSQL 数据库。这也意味着许多 NoSQL 数据库实现了独特的语法来插入和检索数据。
将“NoSQL”和“非关系”视为广义的总括术语会有所帮助因为有许多数据库模型被标记为 NoSQL它们之间存在显着差异。本节的其余部分重点介绍一些更常用的非关系数据库模型
键值数据库
键值数据库也称为键值存储通过存储和管理关联数组来工作。关联数组也称为字典或哈希表由键值对的集合组成其中键用作检索关联值的唯一标识符。值可以是任何内容从简单的对象如整数或字符串到更复杂的对象如 JSON 结构。
Redis是流行的开源键值存储的一个示例。
面向文档的数据库
面向文档的数据库或文档存储是以文档形式存储数据的 NoSQL 数据库。文档存储是一种键值存储每个文档都有一个唯一的标识符——它的键——文档本身充当值。这两种模型之间的区别在于在键值数据库中数据被视为不透明数据库不知道也不关心其中保存的数据由应用程序来了解存储了哪些数据。然而在文档存储中每个文档都包含某种元数据为数据提供一定程度的结构。文档存储通常附带 API 或查询语言允许用户根据文档包含的元数据检索文档。它们还允许复杂的数据结构因为我们可以将文档嵌套在其他文档中。
MongoDB是一种广泛使用的文档数据库。我们存储在 MongoDB 数据库中的文档是用 BSON 编写的它是 JSON 的二进制形式。
列式数据库
列式数据库有时也称为面向列的数据库是按列存储数据的数据库系统。这看起来与传统的关系数据库类似但不是将列分组到表中而是将每个列存储在系统存储中的单独文件或区域中。列式数据库中存储的数据按记录顺序显示这意味着一列中的第一个条目与其他列中的第一个条目相关。这种设计允许查询仅读取所需的列而不必读取表中的每一行并在将不需要的数据存储在内存中后丢弃这些数据。
Apache Cassandra是一种广泛使用的开源列存储。
数据库和应用
数据库管理系统本身并不是很有用。我们可以使用 DBMS 直接查询数据库并与数据库交互但在大多数现实环境中我们可能希望将其与其他工具结合使用因为 DBMS 无法自行提供或显示内容。这样做后数据库就成为大型应用程序的重要组成部分。
有许多流行的开源技术堆栈都包含 DBMS。这里有一些例子
LAMP 堆栈“LAMP”是由通常构成该堆栈的技术组成的缩写 L inux 操作系统、 A pache Web 服务器、 MySQL数据库和用于动态内容处理的 PHP**。**LAMP 堆栈的各个部分换入换出的情况越来越常见例如用 PostgreSQL 或 SQLite 代替 MySQL用 Flask 或 Django 代替 PHP用 Nginx 代替 Apache。其他 L*MP 选项也很常见例如 LEMP其中 E 代表 Nginx发音为 engine-xElastic stackElastic stack 以前称为 ELK Stack是围绕 Elastic search 构建的Elastic search 是一种搜索引擎也被称为面向文档的数据库。这通常用于大规模存储软件输出日志。
这些技术堆栈通常部署在同一台服务器上——这种架构模式称为整体架构。在这种情况下将其他堆栈组件连接到 DBMS 是相当简单的。或者我们可以通过在远程服务器上安装 DBMS 来设置*远程数据库。*大多数 DBMS 都在专用端口上运行我们可以使用该端口将应用程序服务器连接到远程数据库。例如MySQL 的默认端口是3306Redis 的默认端口是6379。与单体应用程序相比使用这样的远程数据库服务器可以是一种高度可扩展的解决方案因为它允许我们独立于应用程序来扩展数据库。
然而像这样设置远程数据库会增加应用程序的攻击面因为它为未经授权的用户增加了更多潜在的入口点。它还要求我们的数据通过网络连接从数据库服务器发送到应用程序服务器这意味着数据包可能会被恶意行为者拦截。为了保护我们的数据免受此类嗅探攻击许多 DBMS 允许我们加密数据。加密是将一段信息从明文信息的原始形式转换为密文一种不可读的形式只能由拥有正确密码的人或计算机进行解密的过程。如果恶意行为者要拦截一段加密数据他们在解密之前将无法读取该数据。
许多 DBMS 允许我们通过将数据库服务器配置为需要使用传输层安全性也称为TLS的连接来加密数据库服务器与需要访问它的任何客户端或应用程序之间的通信。与其前身安全套接字层(SSL) 一样TLS 是一种加密协议它使用基于证书的身份验证来加密通过网络传输的数据。请注意TLS 仅在数据通过网络传输时对其进行加密也称为传输中的数据。即使我们已将 Mongo 配置为要求使用 TLS 建立连接存储在数据库服务器上的静态数据称为静态*数据*仍然是未加密的除非我们的 DBMS 提供某种形式的静态数据加密。
使用数据库
大多数数据库管理系统都安装了命令行工具允许我们与数据库安装进行交互。
然而通过命令行界面管理数据对于每个用户来说可能并不直观这就是为什么许多开源 DBMS 都可以使用图形数据库管理工具。有些如phpMyAdmin或pgAdmin是基于浏览器的而另一些如MySQL Workbench或MongoDB Compass则旨在从本地计算机连接到远程数据库。
随着应用程序不断运行和增长数据库中保存的数据将需要越来越多的存储空间甚至可能会减慢整个应用程序的速度。处理此类问题有几种常见的策略其中最常见的两种是复制和分片。
复制是跨多个独立数据库同步数据的实践。使用数据库时拥有多个数据副本通常很有用。这可以在其中一台数据库服务器发生故障时提供冗余并且可以提高数据库的可用性和可扩展性并减少读取延迟。许多 DBMS 都将复制作为内置功能包括MongoDB和MySQL。有些例如 MySQL甚至提供多种复制方法以实现更大的灵活性。
数据库分片是拆分通常保存在同一个表或集合中的数据记录并将其分布在多台机器上的过程称为分片。分片在我们处理大量数据的情况下特别有用因为它允许我们通过添加更多可以充当新分片的机器来水平扩展我们的基础。
结论
通过阅读本文我们应该更好地了解什么是数据库以及如何使用它们。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87711.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!