Internet DRAFT - draft-patrick-lambert-odbc-uri-scheme
draft-patrick-lambert-odbc-uri-scheme
Independent Submission P. Lambert, Ed.
Internet-Draft Dendory Networks
Intended status: Standards Track October 8, 2014
Expires: April 11, 2015
ODBC URI Scheme
draft-patrick-lambert-odbc-uri-scheme-00
Abstract
This Internet-Draft document specifies a new URI scheme [RFC2396] for
data access using the Open Database Connectivity [ODBC] standard API,
in order to access data in databases from a web browser or any other
client choosing to implement this method of showing data.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 11, 2015.
Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Lambert Expires April 11, 2015 [Page 1]
Internet-Draft ODBC URI Scheme October 2014
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Why ODBC? . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Benefits . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
2. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Implementation . . . . . . . . . . . . . . . . . . . . . 4
2.2. Security Considerations . . . . . . . . . . . . . . . . . 5
3. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1. Normative References . . . . . . . . . . . . . . . . . . 6
5.2. Informative References . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Introduction
Uniform Resource Identifiers (URI) have become the standard way to
access resources over a network, and as such the general public knows
how to access web pages, email addresses and more through this
standard scheme. However, there is no standard way to access data,
typically kept inside of databases, via a standard client such as a
web browser. As a result, we have many different ways of accessing
data from a database, including server processes exporting the
information to a web format, browser plugins that access the database
through a secondary channel (such as ODBC) and then display the
results, dedicated client software which may also have an export
function to HTML format, and so on.
The Open Database Connectivity (ODBC) is already a standard API used
by many database engines and available on most if not all operating
systems and most programming languages. As a result, many client
software access databases through it, but the scheme (or connection
string) used varies by application, programming language and
operating system. A standard URI can leverage this existing API and
provide a common method to access this type of data.
1.1. Why ODBC?
ODBC is a format introduced by Microsoft and others in the early
1990s and that has become the de facto standard way to access
databases. It is available on most systems and through most
programming and scripting languages. As such, it makes sense to
utilize it in order to allow other types of clients (such as web
browsers, email clients, etc) to access data in databases using
existing API calls.
Lambert Expires April 11, 2015 [Page 2]
Internet-Draft ODBC URI Scheme October 2014
ODBC provides independent database engine access through the use of
Drivers (sometimes called Connectors) and Data Source Names (DSN). A
driver is installed on the local machine to access a particular type
of engine, and the DSN specifies things such as the server hostname,
port, login credential, database name, and so on. An operating
system level driver can be installed for most common database engines
such as Microsoft SQL Server, MySQL, SQLite, Oracle Server, and many
more. The DSN varies by driver, but is typically a single string of
text such as:
SERVER=db.example.com;UID=MyUser;PWD=MyPassword;ENCRYPT=1
Since ODBC is so common and already defines a set of standards, it
makes sense to leverage it in order to create a standard URI scheme.
1.2. Benefits
Having a standard URI for database connections would bring several
benefits, above and beyond what ODBC itself provides to programmers
and other IT professionals:
o Simple data viewing interfaces could be built into web browsers to
be accessed directly by users, without the need of a plugin or
server process converting the data.
o Web applications and scripts would be easier to write, able to
leverage the data inside a database through JavaScript and other
client side scripts, again without the need for third party
applications.
o Future client applications could be constructed based on this
standard way to access data, such as adding the ability to edit or
insert data through the location bar in a browser, without the
need for a web server or other server process to be involved and
interpret the data.
o It would reduce the ever-growing amount of different ways data is
accessed online, making it easier to have a common interface to
data.
1.3. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Lambert Expires April 11, 2015 [Page 3]
Internet-Draft ODBC URI Scheme October 2014
2. Syntax
The basic syntax for the ODBC URI scheme must be one of the
following:
odbc:[driver]//[DSN]/[database]/[tables]?[query]
odbc:[driver]//[user]:[password]@[host]:[port]/[database]/[tables]?[query]
In this syntax, odbc is a constant string starting the URI. [driver]
is the name of the installed ODBC driver. This must be the exact
name defined by the driver installed on the local system, such as
"Microsoft ODBC Driver 11 for SQL Server", "MySQL ODBC 5.1 Driver",
or a shortened name such as "SQL Server" and "mysql", without quotes.
The [DSN] part is a freeform text string in the format shown in
Section 1, as expected by the driver. Alternatively, a standard way
to specify [user], [password], [host] and [port] can be used. Of
those four options, only [host] is mandatory.
The next part specifies the [database] and [tables] in a way similar
to how users access web pages. The first text after the slash is the
database name, and any furter slashes specify tables. Finally, a
[query] can optionally be specified in order to pass on queries to
the database, such as SELECT, ALTER or INPUT, as specified in the
ISO/IEC 9075-3:2003 [CLI] specification.
For example, to access the dbo.default table in the master database
on the db.example.com host as user root using the SQL Server driver,
the URI should be:
odbc:SQL Server//root@db.example.com/master/dbo/default
2.1. Implementation
This URI can be implemented by any type of client or server software,
but is particularly suited to web browsers, or other software able to
display formatted text. Implementation should be simple and
straightforward, following the ODBC API specifications, documentation
for which is available in many locations online. Once a user types
in (or script specifies) a URI location, the client should use the
speficied ODBC Driver to establish a connection to a database as
specified in the rest of the URI, fetch data from the database and
tables, optionally affecting the data using the optional query
parameter. Then, the result can be displayed in a window for the
user to view, in a very similar way that a user can access an FTP
server using the ftp:// URI through a web browser, and the results
are displayed as a formatted HTML page.
Lambert Expires April 11, 2015 [Page 4]
Internet-Draft ODBC URI Scheme October 2014
Implementers should avoid relying on third party resources other than
the ODBC Driver in order to implement any part of this process. The
idea of using ODBC is to access a common API interface in order to
communicate directly to a database. Several systems already exist to
export data from databases and other sources. The goal of this URI
is to have direct access to the data source, without the need for a
web server, server process or client plugin. ODBC is easy to
implement in most languages, and should be implemented in the client
software directly. For example, a web browser should be able to use
any installed ODBC driver on the local machine to access an
appropriate database engine, and display fields of data as formatted
text in a similar way that it can connect to an FTP server and
display a directory tree.
The alternate way to specify a [host], [user], [password] and [port]
in the URI may require the software to create a custom DSN based on
those values, before passing the results to the ODBC Driver. This
alternate way is provided to make it easier for users to type in the
URI, without having to remember specific DSN syntaxes. Implementers
are also free to add various options as they see fit, such as
ENCRYPT=1 to force SSL encryption. Software should try to support
every possible ODBC Drivers, but constraints may require them to
limit support to a specific list of drivers.
The CLI specification has commands to do a large amount of actions on
data in a database, such as making new tables, inserting data, and
altering it. At a bare minimum, any client software implementing
this URI scheme must be able to display data through the common
SELECT keyword. Any other action is optional. Any software should
also be able to deal with any properly implemented ODBC Driver,
including those dealing with non-standard database engines, like CSV
files. It should also be able to connect to both local and remote
databases, as specified by the DSN. Finally, it should accept any
valid parameter as part of the DSN. Many ODBC drivers have options
that can be added to the DSN string, and those should be passed on to
the driver properly.
2.2. Security Considerations
The use of a standard URI format that can be entered by users
presents obvious security concerns. Any software implementing this
URI scheme must take care to sanitize user input. In particular,
optional queries should be validated before being passed to the
database engines. Furthermore, data transiting over networks can be
intercepted if in clear text. Most database engines offer
encryption, sometimes through optional parameters passed in the DSN.
Finally, for clients that can access code from remote sources such as
Lambert Expires April 11, 2015 [Page 5]
Internet-Draft ODBC URI Scheme October 2014
a web browser, care should be taken when allowing access to local
databases through a script.
3. Acknowledgements
This document was based on a template derived from an initial version
written by Pekka Savola and contributed by him to the xml2rfc
project.
4. IANA Considerations
This memo includes no request to IANA.
5. References
5.1. Normative References
[RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396,
August 1998.
5.2. Informative References
[CLI] International Organization for Standardization /
International Electrotechnical Commission, "Call Level
Interface (ISO/IEC 9075-3:2003)", 2003,
<https://www2.opengroup.org/ogsys/catalog/c451>.
[ODBC] Microsoft, "Open Database Connectivity (ODBC)", 2010,
<http://support.microsoft.com/kb/110093>.
Author's Address
Patrick Lambert (editor)
Dendory Networks
Montreal
CA
Email: dendory@live.ca
URI: http://dendory.net
Lambert Expires April 11, 2015 [Page 6]