使用pgweb来解开DVD租赁之谜
用pgweb翻译解决一个关于DVD租赁的神秘谜题。
2022年的9月8日
使用pgweb来解开DVD租赁之谜。
使用命令行工具或SQL可能会让人感到有些犹豫。让我们学习使用pgweb的图形用户界面来方便地查看PostgreSQL®的数据。
为什么人类要创建软件呢?答案是为了移动数据。应用程序处理数据,但数据并不只存在于应用程序中。而且,如果要处理和可视化这些数据的话,PostgreSQL®和命令行工具可能很棒,但也可能很复杂。在这篇博客中,我们将讨论数据库图形用户界面(GUI)工具的必要性,并介绍一个用于解决DVD之谜的开源工具pgweb。
GUI – 不仅仅是为了应用程序
数据库GUI工具不能替代命令行工具。然而,使用GUI工具可以快速简单地连接应用程序和数据库。在这里,我们介绍数据库GUI工具补充命令行选项的三种用例:
1. 精简学习曲线:不论是连接数据库还是执行表查询,GUI工具都展示了直观的任务处理方式。例如,以下是使用命令行连接到PostgreSQL数据库的方法:
`psql 'postgres://avnadmin:PASSWORD@demo-pg-dev-advocates.aivencloud.com:13039/defaultdb?sslmode=require'`クリップボードにコピーする
可能有些新用户可能不清楚如何组装这个命令的所有信息,是否该使用引号。
以下是GUI工具的例子:
1. 用户输入主机、端口、用户名、密码和数据库名称,然后点击连接。
2. 提升生产力:对于日常操作,如切换多个数据库或查看表格,使用鼠标点击比执行命令更快。GUI工具可以将各种数据库、表格和模式显示为文件和文件夹层次结构,实现更快速的导航。
3. 附加选项:这些功能因工具而异,但数据库GUI工具中可能包含全文搜索、查询性能调优和完整的SQL命令历史记录等功能。
咱们不谈这个,要集中精力解决作为团队的难题——DVD的谜团。蟹租赁是一个虚构的DVD租赁店,存在于一个Netflix尚未出现的平行世界。蟹租赁正面临着有关库存和IT安全性方面的一些挑战。管理层雇佣了你,并给予你解决这些问题的任务:
1. 因为系统故障,有顾客没有归还DVD。找出故障原因。
2. 顾客满意度下降了。电影库存是否反映了顾客需求?
3. 许多人正在访问蟹租赁的数据库。我们需要思考一下如何获取有关对该数据库的请求的详细信息。
Pgweb是一種跨平台的開源工具,專為PostgreSQL設計。
由于管理者不熟悉SQL,他选择了pgweb作为可以在浏览器上执行的低代码访问可执行数据的工具。Pgweb是一个用GoLang编写的免费开源工具。
如果您没有准备好PostgreSQL服务器,您可以在Aiven上注册账号,并使用可用的免费信用额度部署服务器。
请按照安装步骤,在您的机器上安装pgweb。
连接到数据库
可以通过多种方法启动pgweb服务器并连接到PostgreSQL服务器。您可以使用以下任一方法启动服务器:
启动服务器,并手动输入数据库连接信息。
pgweb`クリップボードにコピーする
2. 通过指定连接标志来启动服务器:
pgweb --host $HOSTNAME --user $USERNAME --db $DBNAME`クリップボードにコピーする
3. 使用连接 URI 启动服务器:
`pgweb --url postgres://$USERNAME:$PASSWORD@$HOSTNAME:$PORTNUM/$DBNAME?sslmode=[mode]`クリップボードにコピーします。
如果您正在使用Aiven for PostgreSQL,则连接信息位于概述选项卡下方。
当pgweb服务器启动后,请访问http://localhost:8081并操作工具。
加载样本数据
请按照本指南,将Pagila移植到PostgreSQL数据库中,这是Sakila示例数据库的一个版本。
让我们来测试一下pgweb。在连接到Pagila数据库的状态下,点击pgweb的查询选项卡,然后执行以下查询:
select
customer.first_name、
customer.last_name、
count(customer.first_name) rentals_count
から
顧客
left join rental on
customer.customer_id = rental.customer_id
group by
customer.first_name、
customer.last_name
order by rentals_count desc;`クリップボードにコピー
谁拥有最多租借的DVD?如果是ELEANOR HUNT的话,那么数据库已经成功加载了。
使用pgweb来解开DVD的谜题
顾客未归还DVD。
你的首要任务是调查为什么有顾客不归还DVD。你立即发现有几位顾客并不知道租赁归还日期。
通过点击查询标签,执行以下查询可以得到答案:
選択
rental.rental_id, rental.customer_id, rental.rental_date, customer.email
FROM レンタル
left join customer on
customer.customer_id = rental.customer_id
WHERE return_date IS NULL;`クリップボードにコピー
这些客户都有一个NULL值作为rental.return_date。我们可以使用pgweb将客户的列表和详细信息导出为JSON、CSV或XML。将此信息发送给IT部门,以便他们可以通过电子邮件提醒这些客户归还租赁物。
为了能够监视蟹租车的业务绩效,而不必担心管理层编写或执行SQL查询的技术细节,我们可以创建一个视图。在SQL中,视图是基于SQL语句结果集的虚拟表。要创建视图,可以在同一SQL语句前加上CREATE VIEW…并执行相同的SQL语句:
CREATE VIEW customers_no_return_rental_date AS
select
rental.rental_id, rental.customer_id, rental.rental_date, customer.email
FROM レンタル
left join customer on
customer.customer_id = rental.customer_id
WHERE return_date IS NULL;`クリップボードにコピー
让我们为了查看这个视图,登陆pgweb仪表板,展开Views下拉菜单,然后点击customers_no_return_retental_date以查看相同的信息。
解开了第一个谜题后,螃蟹租车公司获得了一项新的收入来源——滞纳费!
电影库存是否能够反映出需求(或者不能反映需求)。
由于获得了新的自信,我们将投身于解决第二个谜题。为了完成这个任务,我们将使用两个视图。一个视图是根据最高销售额的电影类别(表示需求),另一个是根据类别的库存量。第一个视图 sales_by_film_category 已经存在于示例数据库中。在 Query 标签页中执行以下 SQL 语句,生成 inventory_by_film_category 视图。
CREATE VIEW inventory_by_film_category AS
選択
category.name、
inventory_count
から
カテゴリ
left join film_category on
category.category_id = film_category.category_id
左join inventory on
film_category.film_id = inventory.film_id
グループ
カテゴリー名
order by
inventory_count desc;`クリップボードにコピー
现在管理员可以通过点击视图来查看按电影类别划分的销售额和库存数量了。
根据以上信息,建议管理层多订购一些戏剧和喜剧电影。由于这些观看不需要专业知识,因此卡尼租赁的管理层可以在无需数据分析师的情况下调整库存平衡。
对螃蟹租赁数据库进行审计。
螃蟹租赁公司雇用了外部公司来进行全面的数据平台安全审计。螃蟹租赁公司使用PostgreSQL数据库,许多员工可以访问数据库的认证信息。我们要确保PostgreSQL数据库运行正常且没有不必要的访问。PostgreSQL内置了审计功能,而pgweb提供了便捷的访问方式。通过使用SQL命令的历史记录,我们可以查看谁访问了数据库。您可以在历史记录选项卡中查看以下示例查询列表:
根据时间戳,在“活动”选项卡中可以查看活动的详细信息,包括用户名称、应用程序/客户端名称、客户端IP/端口以及其他在审计时重要的细节。
总结
由于我们的团队调查,螃蟹租赁公司至少可以继续苟延残喘一段时间而不会被DVD租赁行业所淘汰。虽然这只是一个假设的例子,但许多企业正在利用类似的技术进行基于数据的智能决策。从这篇博客中我们得到了三点收获:
1. 数据库的图形用户界面工具并不是命令行工具的替代,而是一种补充。
2. 图形用户界面工具可以提高生产力,缩短学习曲线,并提供其他功能,如全文搜索和性能优化。
3. Pgweb只是数据库GUI工具的一种选择,请根据您的使用情况选择合适的工具。
如果您正在寻找PostgreSQL的全托管托管服务,请考虑使用Aiven for PostgreSQL®。