所有的公司都从一个小企业的简单记录簿中存储数据, 甚至可能存储在日记本或一张纸上｡
对于像亚马逊这样需要计算机来存储数PB数据的大公司来说｡
现在, 为了存储这些信息, 几乎每个公司, 有时个人, 都需要一个叫做数据库的东西｡
在上一节中, 我们看到让服务器记住一个新用户是多么困难｡
每次服务器崩溃时, 变量都会被重置, 然后重新开始｡
或者, 如果我们想进行登录或登录检查, 并通过JavaScript循环遍历电子邮件和密码,
这是低效的｡
这就是数据库来救援的地方｡
那么, 让我们扪心自问, 什么是数据库？
数据库是数据的集合｡
以及我们所说的数据｡
它们有很多种形式, 对吧？
可以是数字, 可以是日期, 可以是密码哈希｡
可能有用户信息｡
数据库使我们能够以一种对我们有用的方式组织这些数据, 它使数据管理变得容易｡
由此产生了一个叫做数据库管理系统的东西, 简称DB MBS｡
它是一个程序的集合, 允许我们访问数据库和处理数据, 它还允许控制数据库用户的访问｡
所以一个db mbs是这个盒子里的东西｡
一种工具, 一种软件, 让我们可以交流｡
通过数据库存储对我们有用的信息, 还允许我们更新､ 插入､ 删除､
查找数据库中的任何内容｡
DB PBM的想法在20世纪60年代开始形成, 现在它处于许多令人兴奋的事情的前沿｡
整个行业的工程师都在研究数据库, 因为数据库非常重要｡
现在有两种类型的DMS非常流行, 我们将在本课程中讨论这两种类型｡
这两种类型在Post Gress和MongoDB中有很好的体现｡
我们来谈谈第一个, 即关系数据库｡
这可能是最流行的, 如您在右侧所看到的, 您可以看到所有这些都是关系数据库､ post grass､
Oracle､ SQL Server｡
您可能听说过MySQL SQL Light｡
这些都是具有此关系数据库标记的所有类型的数据库｡
它们的美妙之处在于它们都非常相似｡
它们都遵循相同的标准格式｡
关系数据库由两个或多个具有列和行的表组成｡
在本例中, users是一个表, 在我们得列中创建全名username文本, 此处得任何值都是行.
每一行代表一个条目, 每一列对一种非常特定的信息类型进行排序, 如姓名､ 地址或电话号码｡
然后是表和字段之间的关系｡
在关系数据库中称为模式｡
在添加任何信息之前, 必须明确定义架构｡
如果你现在觉得这很混乱, 别担心, 我们会创建这些数据库｡
所以这对你来说是有意义的｡
例如, 如果我们有Twitter, 你可以在这里看到我们将拥有的表格类型以及我们将如何组织它｡
我们会有一个用户表, 一个tweet表, 一个following表｡
我们可以把所有这些信息联系起来, 比如, 通过连接表格的不同部分｡
例如, 用户表中的用户名将与推文中的用户名相同｡
稳定｡
这样我们就可以说tweets表中的用户名是user表中的用户名的外键, 然后是from user｡
将是下表中用户名的外键｡
现在是诸如全名或ID之类的东西, 它们标识表中的每一行｡
它被称为主键, 我们将在本节后面介绍它.
好吧, 我会的
我们将学习PostgreSQL的所有这些数据库, 但它们几乎都一样｡
所以一旦你知道了一个, 就很容易学会其他的｡
它们实际上是如何与具有后端的服务器通信的？
所有的关系数据库都使用SQL｡
SQL允许我们像HTTP一样在前端和后端之间使用SQL进行通信｡
我们能够与数据库通信, 并根据需要进行修改､ 获取或更新｡
我们也会有一个关于这个主题的视频｡
好吧, 我会的
这就是关系数据库｡
第二种呢？
第二种类型称为非关系数据库或NoSQL数据库｡
再一次, 有很多不同类型的数据库, 有一些很酷的名字, 如沙发DB和超级表｡
现在, MongoDB或非关系数据库允许您构建应用程序, 而不必首先定义模式｡
与关系数据库不同｡
如果我们回到关系数据库, 这个模式或这些表必须是预定义的, 对吗？
我们需要知道我们的应用程序会是什么样子, 制作这些表格, 这样一旦应用程序公开, 我们就可以开始输入用户信息､
推文和关注者｡
对于没有SQL或非关系数据库, 我们可以在运行时定义它, 它们都有不同的存储信息的方式｡
所以每一个都非常非常不同｡
使用非关系数据库的另一个重要原因是, 如果在项目开始时您的数据需求不明确, 并且可能有大量的非结构化数据,
那么您可能无法开发具有明确定义的模式的关系数据库｡
相反, 它们提供了更大的灵活性, 因为非关系数据库更像是文件夹,
只是集合了所有类型的相关信息｡
MongoDB是一种面向文档的数据库｡
它将信息存储为文档｡
让我向你说明这一点｡
我的桌面上有两个文件夹｡
一个是关系数据库, 这里有用户的推文和个人资料｡
您可以考虑具有这种存储类型的关系数据库, 其中此文件夹位于存储此信息的计算机上的某个位置｡
任何时候我们需要向数据库请求一些东西, 那么, 我们就抓住用户｡
如果我们还想获取用户的推文,
我们找到我们感兴趣的用户, 然后找到我们也感兴趣的用户的推文, 通过链接到用户的外键｡
我们还可以找到用户拥有的粉丝数量｡
我们获取这些信息并将其显示在我们的web应用程序上｡
另一方面, MongoDB实际上将每个用户作为一个文档｡
如果我想获取第一个用户, 那么, 我只需要获取这个文档, 它包含所有的关注者､
推文､ 个人资料, 所有的一切都在这个文档中｡
你可能会想, 嗯, MongoDB看起来是一个比拥有这个更好的选择｡
正确做事的方式｡
那要看你的需要了｡
这就是为什么数据库是一个如此复杂的主题｡
这真的, 真的取决于你的情况｡
如果你有一个个人资料, 比如LinkedIn个人资料, 你可以看到MongoDB的方式非常有用,
但是如果你只需要关注数据或推文数据, 比如你想看的推文,
平均推文大小是多少？
很简单, 只需抓取该文件并计算, 而不是像这样从每个用户那里提取｡
所以这真的取决于你的需要｡
让我给你们看另一个可能的图表｡
很有用｡
当我们比较关系数据库与非关系数据库时, 您可以将关系数据库视为每个表都有一个博客帖子､
一个博客标签､ 一条博客评论, 它将这些表链接起来,
为给予提供博客信息, 而非关系数据库则将整个博客帖子存储在一个条目中, 并将评论､ 标签､ 类别和所有其他相关数据存储在一个位置｡
那么MongoDB使用什么进行通信呢？
如果我们回到这里的例子, 我们有关系数据库的SQL, 如Post Press｡
MongoDB有它自己的查询语言, 它就是MongoDB查询语言｡
但他们的目标都是一样的｡
也就是说, 要与数据库通信, 请为服务器提供一种与数据库通信的简便方法｡
在本节中, 我们将讨论这一点, 并最终将这些点连接起来,
向您展示数据库连接到服务器后的强大功能｡
下次见｡