Module 01 · Relational Database Concepts
Database Usage Patterns数据库使用模式
看完本视频后,您将能够:
- 识别主要的数据库用户类别及其访问数据库的用例。
- 解释不同类型数据库用户使用的接口和工具。
一、 数据库用户的主要类别
不同的工作角色使用不同的工具来访问数据库。数据库用户主要分为三类:
- 数据工程师和数据库管理员 (DBA)
- 数据科学家和业务分析师 (Business Analysts)
- 应用程序开发人员 (Application Developers)
二、 角色与使用工具详解
1. 数据工程师和数据库管理员 (DBA)
- 主要活动:
- 从事数据库管理工作,包括数据库对象的建立和监督。
- 实施访问控制。
- 监控和增强性能。
- 核心目标: 致力于创建高效存储和管理数据的坚实基础。
使用的机制和工具
| 机制 | 描述 | 示例 |
|---|---|---|
| 图形用户界面 (GUIs) / Web 管理工具 | 常见的数据库交互方式。数据库通常提供图形工具、Web 界面(特别是云数据库)和移动应用程序。如果供应商工具不具备足够功能或用户友好性,用户可能会转向第三方或专业替代方案。 | Oracle SQL Developer(Oracle 提供的图形工具)。 |
| 命令行接口 (CLIs) 和实用程序 | 在 GUI 工具普及的情况下仍然发挥着关键作用。用户可以直接发出数据库命令或利用交互式 shell 进行高效的命令行交互。 | 直接命令:例如 db2 create database sample;mysqldump sakila > sakila.sql。交互式 Shell:例如 Oracle 的 sqlplus 或 db2 clp(如 db2 > connect to sample)。其他:从 shell 执行 SQL 脚本和批处理文件。 |
| 应用程序编程接口 (APIs) | 数据库通常包含用于管理任务的编程接口或 API,可从数据工程师或第三方创建的应用程序和工具中访问。 | 当需要自动化或程序化访问来执行创建和管理数据库对象、设置访问控制和监控性能等任务时,通常使用 API。 |
2. 数据科学家和业务分析师
- 主要活动:
- 数据分析、洞察提取和数据驱动的预测。
- 典型的数据访问模式涉及读取现有数据源,偶尔需要创建和填充数据库对象(尤其是在他们的沙盒环境中)。
使用的工具
| 任务类别 | 常用工具 | 交互方式 |
|---|---|---|
| 数据科学与机器学习 | Jupyter、R Studio、Zeppelin、SAS、SPSS。 | |
| 报告、仪表板和商业智能 (BI) | Microsoft Excel、Microsoft PowerBI、Tableau、Microstrategy。 | 通过 SQL 接口和 API 与关系型数据库交互,通常抽象了直接使用 SQL。 |
| 即席查询 (Ad-hoc Querying) | SQL 查询工具(数据库提供或第三方解决方案)。 | 用户也可以选择 SQL 查询工具。 |
3. 应用程序开发人员
- 主要活动:
- 很少直接访问数据库。
- 创建需要对数据库进行读写访问的应用程序。
- 使用的编程语言: C++、C#、Java、JavaScript、.NET、PHP、Perl、Python 和 Ruby。
数据库通信
- 低级 API: 编程语言通过 SQL 接口和 API(如 ODBC 和 JDBC)与数据库通信。一些数据库(尤其是基于云的数据库)也包含用于数据访问的 REST API。
- 面向对象映射 (ORM) 框架:
- 现状: 尽管使用低级 API 进行编程可行(过去是传统方法),但现在大多数程序员在处理数据库时选择 ORM 框架。
- 定义: ORM 框架是软件开发中的工具,旨在促进关系型数据库与面向对象编程语言之间的交互。
- 优势: 它们用户友好,可以隐藏底层关系型数据库和 SQL 的复杂性。
- 流行示例: Ruby 应用中的 ActiveRecord、Python 中的 Django、.Net 中的 Entity Framework、Java 中的 Hibernate 和 JavaScript 中的 Sequelize。
总结要点
- 数据库服务于多种用户角色,包括数据工程师/DBA、数据科学家/分析师和应用程序开发人员。
- 数据工程师/DBA 使用 GUI、命令行接口和 API 进行管理任务。
- 数据科学家/分析师 利用 Jupyter、R Studio 和 SQL 接口进行分析;而 PowerBI、Tableau 等 BI 工具则抽象了 SQL 交互。
- 应用程序开发人员 使用编程语言和 ORM 框架进行应用程序开发。