澄清:数据库,DBMS,SOA,REST

时间:2015-11-03 21:24:12

标签: sql rest soa web-frameworks nosql

大家好,我是服务器端技术的新手,所以这可能是一个愚蠢的问题,但在阅读了数十篇文章并观看了数十个视频后,我仍然感到非常困惑。这与现代应用程序的arquitecture原则有关。

关系模型: 我知道几年前该模型是一个数据库(主要是关系型)和一个DBMS,它支持应用程序和数据库之间的连接。

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

非关系模型:

问题2:现在随着NoSQL模型的兴起,DBMS的概念是否同样适用?由于这些系统允许除SQL之外的其他查询语言,应该有一些具有此功能的软件吗?

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

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

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

问题4:这些应该提供工具来开发SOA系统的前端和数据库之间的所有内容吗?

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

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

编辑: enter image description here

1 个答案:

答案 0 :(得分:0)

我会单独处理你的问题:

  

问题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之外的其他查询语言,应该有一些具有此功能的软件吗?

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

随着这些技术的发展,这仍然是一个不断发展的空间。

  

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

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

  

最后但并非最不重要的是,Django或Ruby on Rails等框架在哪里登陆?

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

  

这些应该提供工具来开发SOA系统的前端和数据库之间的所有内容吗?

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

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

  

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

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

很难总结出维基百科的文章,我建议你深入研究它。

希望能够解决一些问题!