【问题标题】:clarification: Database, DBMS, SOA, REST说明:数据库、DBMS、SOA、REST
【发布时间】:2016-02-04 04:59:51
【问题描述】:

大家好,我是服务器端技术的新手,所以也许这是一个有点愚蠢的问题,但是在阅读了几十篇文章和观看了几十个视频之后,我仍然很困惑。这与现代应用的架构原则有关。

关系模型: 我知道几年前的模型是有一个数据库(主要是关系型的)和一个 DBMS 来实现应用程序和数据库之间的连接。

问题 1:既然我们谈论的是关系模型,那么一些 DBMS 的例子是 MySQL 还是 PostgreSQL? 问题二:信息交流的过程是怎样的?客户端使用PHP之类的语言向服务器发出请求,然后DBMS将请求转换为SQL并访问数据库?是否需要将 PHP 转换为 DBMS 功能的 SQL 部分或其他服务器端软件? (如果有人能给我简要的详细解释,我将非常感激)

非关系模型:

问题 2:如今随着 NoSQL 模型的兴起,DBMS 的相同概念是否适用?既然这些系统允许SQL以外的其他查询语言,应该有一些软件有这个功能?

面向服务的架构: 几乎每个应用程序都使用这种类型的架构。我理解避免在客户端和服务器端之间创建过于紧密的软件关系的概念,从而允许跨多个平台多次使用。我不明白的是,哪些部分构成了以这种方式构建的系统。

问题 3:DBMS 是否提供构成可用 Web 服务的 API?

网络框架: 最后但并非最不重要的一点是,Django 或 Ruby on Rails 等框架在哪里落地?

问题 4:它们应该提供工具来开发 SOA 系统的前端和数据库之间的一切,对吗?

问题 5:我看到很多关于 REST 架构的讨论。你能解释一下发生的查询过程以及所涉及的软件实体是什么。

提前感谢您提供的任何解释,帮助我理解这些问题。请提供一些您认为有用的链接或图表。

编辑:

【问题讨论】:

  • 对象关系映射 (ORM) 是一整类工具,介绍如何从数据库中的数据到代码中的对象,它有多种做事方式:Hibernate、Linq2Sql、实体框架等。en.wikipedia.org/wiki/Object-relational_mapping 将是维基百科的链接,让你开始走上这条黄砖路。

标签: sql rest soa web-frameworks nosql


【解决方案1】:

我会单独解决你的问题:

问题 1:既然我们谈论的是关系模型,那么一些 DBMS 的例子是 MySQL 还是 PostgreSQL?

正确。数据库管理系统是一套软件,可让您与特定的数据库技术进行交互。你举的例子是正确的。

问题2:信息交流的过程是怎样的?客户端使用PHP之类的语言向服务器发出请求,然后DBMS将请求转换为SQL并访问数据库?是否需要将PHP转换为SQL部分的DBMS功能或其他服务器端软件?

为此有许多不同的途径。通常,用于访问数据库的 API 是通过 ODBC(开放式数据库连接)完成的。大多数(如果不是全部)关系数据库供应商都可以使用 ODBC 驱动程序,并且都非常相似。

像 PHP 这样的语言可以通过 ODBC 连接库(例如 http://php.net/manual/en/intro.uodbc.php)连接到数据库,这将允许您将 CRUD 操作发送到 DBMS 以在数据库上执行。

由于大多数 DBMS 使用 SQL 标准的子集或超集来查询数据库,因此您可以直接通过 ODBC 传递此代码,也可以使用其他抽象级别。一种常见的方法称为 ORM(对象关系映射器)。 ORM(例如 Python 的 SQLAlcmehy:http://www.sqlalchemy.org/)提供了一个抽象层,因此您不必依赖编写 SQL,而是以您选择的语言更常见的格式编写查询和数据库命令。

问题 2:如今随着 NoSQL 模型的兴起,DBMS 的相同概念是否适用?既然这些系统允许SQL以外的其他查询语言,应该有一些软件有这个功能?

相同的一般概念(因为有一个数据库驱动程序公开了一个语言可以挂钩的 API),但现在通常有更多不同的方式与数据库交互,因为它们有许多不同的结构。大多数 NoSQL DB 仍然具有 ODBC 连接器(例如 MongoDB 和 Hadoop),因此在连接它们时仍然适用一般的编程实践,但是您期望数据库执行的操作(以及它们的自然查询语言)会有所不同。

随着这些技术的发展,这将继续成为一个不断发展的空间。

问题 3:DBMS 是否提供构成可用 Web 服务的 API?

不确定我是否理解这个问题。 ODBC 和 Web 服务是不同的。如果您想通过 Web API 查询数据库,则 Web 服务通常位于 ODBC 之上,但它比直接通过 ODBC 连接到 DB 多了一层抽象。

最后但并非最不重要的一点是,Django 或 Ruby on Rails 等框架在哪里落地?

Web 框架是一种加快 Web 应用程序开发的方法,它试图阻止您通常对每个 Web 应用程序所做的一些“重新发明轮子”的事情。它们为您提供基础知识,并具有许多扩展,可让您实现网络应用程序的其他常见元素(如订阅/登录系统、会话管理、管理系统等)。

这些应该提供工具来开发 SOA 系统的前端和数据库之间的一切,对吧?

Django 和 RoR 都旨在成为端到端框架。它们包括您需要的所有常见元素,包括对象关系映射器。他们没有规定您必须使用哪种 DBMS,他们的 ORM 可以与许多接口进行交互,因此您仍然可以选择。

是的,它们旨在涵盖从前端到数据库的所有内容,包括与数据库结构的交互和初始化。

问题 5:我看到很多关于 REST 架构的讨论。你能解释一下发生的查询过程以及所涉及的软件实体是什么。

REST 代表 Representational State Transfer(快速维基百科文章:https://en.wikipedia.org/wiki/Representational_state_transfer)。简而言之,创建“RESTful”(REST 兼容)Web API 意味着您拥有 GET、PUT、POST 和 DELETE 方法来完成所有服务。 REST 与 HTTP 协议紧密结合,这就是为什么它非常适合不断增长的 Web 应用程序概念,它有助于将思维从一个网页(或一组网页)转变为 Web 应用程序。

很难比维基百科的文章总结得更好,我建议你深入研究一下。

希望这能解决一些问题!

【讨论】:

  • 首先感谢您的回答。真的很清楚。只想再问你一个问题。我在我的问题中包含了一个图表,或多或少地显示了我的理解,如果我走在正确的道路上,你能指出我吗?
  • 是的,简而言之,该图很好地涵盖了它。绝对是在正确的道路上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2015-01-19
相关资源
最近更新 更多