繁体   English   中英

如果我使用 PostgreSQL,我还需要服务器吗? 像 AWS RDS?

[英]If I'm using PostgreSQL, do I need a server too? Like AWS RDS?

在我的 CS 程序中,有人告诉我应该为我的数据库学习 SQL。

如果我使用 PostgreSQL,我还需要一个 SQL 服务器来配合它吗? PostgreSQL 是一种语言、一种服务器,还是两者兼而有之? 甚至有 SQL 语言还是只有服务器?

背景:我下载了 Postgres 因为嘿,它的名称中有 SQL,它可以工作,而且我觉得它无论如何都是一个不错的选择。 但是我无法通过他们的网站弄清楚它是否需要配套服务器,所以我去找了一个并找到了 AWS RDS。

我的印象是 Postgres 是语言,AWS RDS 是服务器,它们提供不同的功能。 但我不确定这些。

我使用过 Postgres,它是一款出色的产品(而且是免费的)。 我会先独立安装它。 它确实带有自己的客户端工具,用于与作为服务独立运行的数据库服务器进行通信。 但是,您最好将 SqlWorkbench 之类的东西安装为客户端工具(我使用)。 在配置中,您指定运行 Postgres 的机器(可以是用于测试目的的本地计算机)和要连接的端口。 本质上,客户端将您的指令发送到 Postgres 服务器,服务器返回与您的指令相关联的结果集。 客户端还将结果集格式化为具有行和列的良好可读的“电子表格”格式。

似乎您同时学习了太多新主题。 行。 我会尽力回答。

SQL 代表“结构化查询语言”,并作为许多供应商的“标准”,在很多方面都尊重其基本原理。 Oracle、MySQL(现在归 Oracle 所有)、MariaDB 和 PostreSQL 是一些供应商。

我建议您在每次查看 SQL 代码时识别它的主要内容是了解它是属于 DML 还是 DDL。 DML 代表“数据操作语言”,指的是“修改”数据的 SQL 指令。 DDL 代表“数据声明语言”,它定义或“更改”将存储数据的结构。

另一个重要的概念是数据操作的原子性。 您可以在保留之前确认更改或将其回滚。 这件事对应于“提交”更改或执行“回滚”。 这是某种高级概念,但通常使用标准客户端配置“自动”发生。 稍后,您必须在编写一些与数据库交互的系统模块时了解它。

当您想到 SQL“服务器”时,它指的是配置/安装的软件,它负责在某种持久性“实例”内管理数据的持久性,分配在具有数据存储功能的某些系统中。 AWS 在云端实现了这项服务,RDS 是支持多种 SQL 风格选择的产品(Oracle、Postgresql 等)

如果您对 Docker 感到满意,我建议您学习基础知识,这将帮助您多次设置和销毁数据库,这对本地开发和测试很有用。 下一个命令,让你启动一个配置了开放端口 5432 的 Postgresql 数据库。你可以通过 docker 查看服务器日志,并使用一些 SQL 客户端进行连接。 当您按 Ctrl+C 时,所有内容都将被删除。 当然还有其他方法可以保持数据的持久性,但是这个命令是一个简单的起点。

$ docker run --rm -p 5432:5432 --name some-postgres-container-name -e POSTGRES_PASSWORD=mysecretpassword postgres:13.3

旁注:最好习惯于始终使用特定的 docker 映像版本(而不是“最新”)。

关于它使用的更多细节在这里: https : //hub.docker.com/_/postgres/

如果我使用 PostgreSQL,我还需要一个 SQL 服务器来配合它吗? PostgreSQL 是一种语言、一种服务器,还是两者兼而有之? 甚至有SQL语言还是只有服务器lol? 我真的很想自己解决这个问题,但基本上我读到的所有内容都超出了我的能力范围,让我更加困惑。 我很好地学习了 SQL 的语法,但我对最基本的一切都感到困惑。

顺便说一句,“SQL Server”是微软的 SQL 风格,只是另一种风格。 不要与配置一些 SQL 服务器的概念混淆。

是的,您也可以将 PostgreSQL 视为一种语言,它与其他 SQL 供应商共享其大部分语法和语义。 是的,所有供应商之间共享和兼容的“基本”SQL 语言; 有些比其他共享更多的方面。 就维恩图而言,您可以想到许多圆圈代表每个圆圈,Microsoft 的 SQL Server、Oracle SQL、PostgreSQL、MySQL 等共享其大部分元素,其中每个元素都是一条 SQL 指令。

一般处理数据库时,请记住它们有助于对“真实世界”场景或软件系统的情况进行建模。 SQL 允许与“关系数据库”的实现进行“对话”,这是一种数据库建模,但也有其他的。 ER 图表有助于以概念方式表示数据库的“结构”。 我喜欢 DBeaver 因为它有一个集成的 ER 图生成器,它有助于理解给定数据库实例的结构。

首先我会尽量回答你提出的问题。 有一种 SQL 语言,但实际上并没有严格标准化。 有许多用于数据库和数据库服务器的产品。 其中许多将在下面讨论。

您选择的任何数据库都会让您有机会学习 SQL 查询的基础知识,即使您稍后切换到不同的数据库,这些知识也会很好地为您服务。

具体来说,当谈到 PostgreSQL 时,它是一个关系数据库管理系统 它是一种作为服务器运行的软件。 您可以将其安装在运行 Windows、Linux 或 MacOS 的个人计算机上。 您还可以安装在专用服务器计算机上,从而获得更好的性能和正常运行时间。 此外,有许多公司提供 PostgreSQL 托管,包括 Amazon RDS 和 Google Cloud,但它们不是免费的。

对于 CS 学生来说,在您的个人计算机上安装 PostreSQL 可能是一个合理的选择。 但是你有很多选择。 继续阅读....

对于 CS 程序,您选择的数据库将取决于:

  • 你需要什么程度的便携性
  • 你有多少数据
  • 有多少用户将连接到数据库
  • 毕业后可以从事什么工作

可移植性

如果您想将数据库与您的应用程序一起发布,那么您最好的选择可能是SQLite 根据某些帐户,它可以处理价值数百万行的数据并且仍然具有高性能。 但是,如果您需要多个用户连接到同一个数据库,这不是很好。 在许多多用户场景中,您的数据可能会损坏。

多少数据和用户

对于大数据和大用户,您需要考虑客户端/服务器重击者:

  • PostgreSQL
  • MySQL / MariaDB
  • 甲骨文
  • SQL Server这些数据库将支持任意多个同时连接的大量数据。 但是如果你想和你的应用程序一起分发数据库,​​这不是一个好主意。 或者,如果您想演示您的应用程序,您需要确保与服务器的连接可用。 所有这些数据库都有一个免费版本,但最后两个的限制最多。

毕业后

现在,您正在展望未来,并可能希望在简历中体现什么样的技能。 如果您认为自己最终会进入一个已经建立良好的公司环境,那么他们可能已经拥有一个首选数据库,并且可以是此处列出的任何数据库(SQLite 或“重度击球手”)。 如果你想将自己定位为开发低开销的应用程序,你会倾向于 SQLite/PostgreSQL/MySQL。 如果您认为自己将成为某种在封闭的公司环境中工作的数据库管理员,那么这些公司往往会偏爱 SQL Server 和 Oracle。

祝你好运。 您做出的任何选择都可能没问题。 了解 SQL 的某种风格对您未来的工作很有用。

SQL 是一种与任何其他语言一样的语言,但适用于数据库。 之所以称为 SQL,是因为它适用于结构化数据,如表(即行和列)。 看了PostgreSQL的文档后,我认为我们不需要任何单独的服务器安装。 你可以从这里下载。 如果您遇到任何问题,我建议您使用 MySQL 工作台。 虽然安装可能需要更长的时间,但它很容易理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM