‫所有的公司都从一个小企业的简单记录簿中存储数据, 甚至可能存储在日记本或一张纸上｡
‫对于像亚马逊这样需要计算机来存储数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查询语言｡
‫但他们的目标都是一样的｡
‫也就是说, 要与数据库通信, 请为服务器提供一种与数据库通信的简便方法｡
‫在本节中, 我们将讨论这一点, 并最终将这些点连接起来,
‫向您展示数据库连接到服务器后的强大功能｡
‫下次见｡