数据库基础
数据库基础
很难想象任何面向公众的、哪怕是复杂程度最低的应用程序不依赖某种结构化数据。正在开发应用程序?学会爱上数据库。
数据库是一种擅长读取数字信息然后以结构化格式可靠地存储它的软件,以便以后可以以有用的格式和组合有效地检索信息。
选择正确的数据库模型
数据世界会变得非常复杂,而且速度非常快。但实际上,可以说大多数项目都可以通过以下两种数据库模型之一成功服务:关系型 (SQL) 和 NoSQL。
关系数据库
如果您需要以仔细定义各种信息类别之间相互关联的方式组织数据,那么关系数据库可能就是您的理想选择。想象一下,一家企业必须根据员工的工作、薪酬方式和健康保险状况来管理员工。与每位员工相关的数据出现在每个类别中,但与此同时,其他用户可能无法访问超出个人需要的数据。
关系数据库通常由 SQL 标准的一种或另一种风格管理。SQL 代表结构化查询语言,其“结构化”部分说明了大部分内容。SQL 类型的数据库(主要示例包括 Oracle、MySQL、PostresSQL、Microsoft 的 SQL Server 以及最近的 Amazon 的 Aurora)由表组成,而表又包含记录(或有人称之为行)。记录由称为字段的各个值组成。因此,客户信息数据库的内容可以这样表示:
ID | 姓名 | 地址 | 城市 | 购买次数 |
---|---|---|---|---|
1 | 约翰·多伊 | 123 任何圣。 | 你的城镇 | 5 |
2 | 简·史密斯 | 321 Yna 大道 | 赫敦 | 2 |
这里,数据库有由数字 1 和 2 标识的记录,每个记录包含由姓名、地址和购买次数组成的字段。
这种强结构的主要优点可能在于它具有高水平的可预测性和可靠性,因为可以将精心定义的规则应用于影响数据的所有事务。例如,您可以对应用程序用户访问数据库的方式施加约束,以确保两个用户不会同时尝试对单个记录进行更改(这可能会导致数据损坏)。
下面是一个有时可以发挥作用的例子。快速浏览一下美国政府劳工统计局 (BLS) 的网络和计算机系统管理员职业展望手册页面。在页面的九个选项卡上显示的内容之间,有相当多的文本。但我怀疑其中只有很少一部分是人工手动添加到此页面的。
更可能的是,BLS 服务器上的数据库包含数 TB 的原始数据,其中可以找到与所包含的数千个职业相关的结构化信息。这些数据可能按信息类别(“摘要”、“工作环境”等)组织。当我从 BLS 菜单(或通过互联网搜索引擎)请求此页面时,BLS Web 服务器可能已从数据库请求相关原始数据,并按照您看到的方式在页面上动态组织这些数据。
当然,网站可以通过许多其他方式利用动态访问安装在后端的数据库引擎,但这是一个很好的例子。
NoSQL 数据库
时代在变化。在 IT 世界的所有领域,数据正在以一代人以上设计第一个关系数据库时无法预料的数量和速度生成、使用和分析。例如,想象一下,您正在建立一家批发企业,需要处理数以万计的商品不断变化的产品描述和库存信息;反过来,这些数据必须与销售、运输和客户服务运营相结合。
在这种情况下,您可能希望使用 NoSQL 数据库(例如 AWS 的 DynamoDB)。NoSQL 数据元素之间高度灵活的关系允许更简单地集成跨多个客户端和不同格式存储的数据。这使得轻松适应快速增长的数据源成为可能。
不管你怎么想,有些人认为 NoSQL 不是No SQL或Not SQL的缩写,而是Not Only SQL的缩写。这是因为这些数据库有时可以支持类似 SQL 的操作。换句话说,有时你可以欺骗 NoSQL 数据库,让它提供与关系数据库类似的功能。
如果您想更全面地了解 NoSQL 以及它如何融入更广泛的数据库模型,AWS 文档“什么是 NoSQL?”应该会有所帮助:https://aws.amazon.com/nosql。
如何选择
您为项目选择的数据库架构通常取决于应用程序的特定需求。例如,如果您正在运行金融交易,并且由于绝对准确性和一致性的首要需求,单个记录永远不能有多个值,那么您可能会选择关系平台。试想一下,如果两个并发客户端会话提取特定帐户中的所有资金,将导致多么混乱。
另一方面,假设您托管一款流行的在线多人游戏。如果能够快速更新数据点可以大大提升玩家体验,并且偶尔的写入失败不会导致僵尸大灾难,那么您肯定会考虑使用 NoSQL
想要深入了解?查看几门出色的 Pluralsight 课程:Andrew Brust 的《理解 NoSQL》和Jon Flanders 的《SQL 简介》。
本指南包含改编自我的两本 Manning 书籍的内容:《一个月的午餐学会亚马逊 Web 服务》和《Linux 实战》。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~