-
Notifications
You must be signed in to change notification settings - Fork 4
/
778.txt
111 lines (93 loc) · 4.13 KB
/
778.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[4] [[データベース]]を表す [[URL scheme]] がいくつか使われています。
[2]
[FIG(short list)[
- [CODE(URI)@en[[[db:]]]]
- [CODE(URI)@en[[[jdbc:]]]]
- [CODE(URI)@en[[[mysql:]]]]
- [CODE(URI)@en[mysql2:]]
- [CODE(URI)@en[mysql+zxjdbc:]]
- [CODE(URI)@en[mysql+mysqlconnector:]]
- [CODE(URI)@en[mysql+cymysql:]]
- [CODE(URI)@en[mysql+pymysql:]]
- [CODE(URI)@en[mysql+gaerdbms:]]
- [CODE(URI)@en[mysql+pyodbc:]]
- [CODE(URI)@en[mysql+mysqldb:]]
- [CODE(URI)@en[mysqlgis:]]
- [CODE(URI)@en[[[oracle:]]]]
- [CODE(URI)@en[[[redis:]]]]
- [CODE(URI)@en[[[rediss:]]]]
]FIG]
* 意味
[5] 多くの [[URL]] は、接続先の[[データベース]]を表しています。
すなわち、[[データベース]]へ接続するために必要な[[プロトコル]]、
[[ホスト]]、[[データベース]]名、接続オプションなどを [[URL]]
に含めています。
[7] [[データベース]]内のデータにまで[[アドレス付け]]している [[URL scheme]]
は今のところなさそうです。
* 標準化
[6] あらゆる点でほとんど[[実装依存]]であり、[[標準化]]の動きもありません。
みな似たような構文と意味に収まっていますが、細かい点に色々と違いがありそうです。
* 歴史
[8] [[ODBC]] や [[Perlモジュール]]の [[DBI]] は、接続先の[[データベース]]の種類
([[プロトコル]]) によらず (ほぼ) 共通化された構文の[[接続文字列][ODBC DSN]]や
[[DSN][DBI DSN]] を採用していました。
これが単一の[[文字列]]によって接続先[[データベース]]の記述を統合的に扱おうとした事例のはしりなのでしょうが、
[[接続文字列]]は構文的に [[URL]] とまったく異なっていましたし、
[[DSN][DBI DSN]] も [[URL]] とは見なされていませんでした。
* メモ
[9] [[データベース]]へ接続するためには[[ホスト]]、[[プロトコル]]、
[[データベース名]]など色々なオプションを指定しなければなりません。
[[データベース]]を扱う[[アプリケーション]]の起動時や設定ファイルでこれを一々指定するのも中々大変ですし、
複数の[[データベース]]に接続する巨大な[[アプリケーション]]では[[データベース]]管理だけで一苦労です。
その点、 [[URL]] のようにこうした指定を1つの[[文字列]]にまとめられると、
[[データベース]]ごとに1[[文字列]]を指定できるようにすれば良いだけなので、
[[開発者]]も[[運用]]担当者も楽になります。
[1] [CITE@en[Engine Configuration — SQLAlchemy 0.9 Documentation]]
([TIME[2015-07-06 00:17:46 +09:00]] 版)
<http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#database-urls>
[FIG(quote)[
[FIGCAPTION[
[3] [CITE[Data Services — Stackato 3.0.1 documentation]]
([TIME[2015-07-03 07:24:32 +09:00]] 版)
<http://docs.stackato.com/3.0/user/services/data-services.html#database-url>
]FIGCAPTION]
> It contains the connection string for the bound database in the following format:
> protocol://username:password@host:port/database_name
]FIG]
[FIG(quote)[
[FIGCAPTION[
[10] [CITE@en[Welcome to Django-environ’s documentation! — Django-environ 0.4.0 documentation]]
([TIME[2015-09-24 01:20:50 +09:00]])
<https://django-environ.readthedocs.io/en/latest/>
]FIGCAPTION]
> db_url
> PostgreSQL: postgres://, pgsql://, psql:// or postgresql://
> PostGIS: postgis://
> MySQL: mysql:// or mysql2://
> MySQL for GeoDjango: mysqlgis://
> SQLITE: sqlite://
> SQLITE with SPATIALITE for GeoDjango: spatialite://
> LDAP: ldap://
> cache_url
> Database: dbcache://
> Dummy: dummycache://
> File: filecache://
> Memory: locmemcache://
> Memcached: memcache://
> Python memory: pymemcache://
> Redis: rediscache://
> search_url
> ElasticSearch: elasticsearch://
> Solr: solr://
> Whoosh: whoosh://
> Xapian: xapian://
> Simple cache: simple://
> email_url
> SMTP: smtp://
> SMTP+SSL: smtp+ssl://
> SMTP+TLS: smtp+tls://
> Console mail: consolemail://
> File mail: filemail://
> LocMem mail: memorymail://
> Dummy mail: dummymail://
]FIG]