设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

一项针对数据库URI标准的提议

2013-12-25 11:10| 发布者: joejoe0332| 查看: 2482| 评论: 0|原作者: Jonathan Allen|来自: InfoQ

摘要:   大卫·惠勒提出了一种用于数据库连接的标准URI格式。该提议将允许基于不同技术构建的应用程序共用相同的连接串。这对于包括报表设计器、自动构建和部署工具以及ORM在内的众多工具都是有好处的。该提议以db作为方 ...


除了要求实现者尽力忠实地遵循RFC 3986外,我不认为有很多东西需要标准化。


  我们也可以反驳上述观点。例如,如果没有一个通用的前缀,开发人员将不得不在操作系统中为应用程序能够连接的每个数据库引擎注册一个单独的前缀。当遇到先前不知道的数据库时,这种方案会允许应用程序提示用户,而不是简单地失败。这类似于每个文件类型都一个单独的前缀,而不是仅仅使用http/https,然后由浏览器决定做什么。


  大卫·惠勒在其声明中提到了其它需要考虑的问题。


首先,权限部分必须包含一个主机地址的要求阻止了可用于连接Unix套接字的只包含一个用户名的URI规范。其中,PostgreSQL和MySQL提供经过身份验证的套接字连接。RFC 3986需要主机名,而其前身RFC 2396并不需要。此外,作为先例,文件URI也不需要。因此,我正考虑允许使用类似的方式连接到PostgreSQL数据库:

db:pg://postgres:secr3t@/


总之,允许用户信息中没有主机名是有意义的。


第二个问题是在权限部分之后的路径部分中不允许相对文件名。这里的问题是,大部分数据库引擎并不使用路径作为数据库名,因此,前面的斜杠毫无意义。例如,在db:pg:localhost/foo中,PostgreSQL数据库的名称是foo,而不是/foo。但在db:firebird:localhost/foo中,Firebird数据库的名称是路径/foo。这样,每一种引擎实现必须知道路径部分是否是一个文件名。


但实际上,有些数据库可能允许为本地连接指定路径,为远程连接指定名称。Informix似乎就支持这种变体。那么如何知道路径是文件路径还是命名的数据库呢?这两种变体是无法区分的。


RFC 2396非常明确地规定,当路径部分在权限部分的后面时必须是绝对路径。但是,RFC 3986只在没有权限部分时才禁止双斜杠。因此,我认为,对于绝对路径,最好是有第二道斜杠。使用简单名称或者相对路径的引擎可以直接将它们放在第一道斜杠后面,而绝对路径可以使用第二道斜杠:

  • 绝对路径: db:firebird://localhost//tmp/test.gdb
  • 相对路径: db:firebird://localhost/db/test.gdb
  • 名称: db:postgresql://localhost/template1


查看英文原文:A Proposal for a Database URI Standard


转自 http://www.infoq.com/cn/news/2013/12/DB-URI-Standard


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部