Re: FW: [IndexedDB] Spec changes for international language support

はじめまして、吉川と申します。

こちらでは初ポストとなるかと思います。皆様よろしくお願い致します。

データベースの専門家というわけでなく、IndexedDBを囓っているという程度ですが
興味があったのでポストしてみます。

まず前提条件として、IndexedDBにデータを格納する場合、RDBMSのような明確な列を持っていません。
JavaScriptオブジェクトをそのまま保存する形になるので、そういう意味では対応する型(プロパティ)は、string、date、long、floatとなります。
そのため、例にあった電話番号は、ロケールに対応するべきプロパティがありません。
従来のRDBMSであれば、ロケールに対応しているものは、日付型もしくは通貨型となりますので、ここで
該当するのは日付型のみとなると思います。

恐らく議論の中心になるのは、collationだと思います。
IndexedDBは、指定したプロパティに対して索引を作成することができますが、その索引はソートされた状態で保持されます。
そのため、索引となるプロパティについては、照合順序の策定が必須となります。
ここでは、string型のデータが該当するかと思います。

日本語環境での各種RDBMSとNoSQLデータベースのcollationの仕様と利用状況等のデータが欲しいところでしょうか。
まずは、認識合わせとして簡単に書いてみましたが、ご意見、ご指摘頂ければと思います。

以上



2011/2/19 Koji Ishii <kojiishi@gluesoft.co.jp>:
> IndexedDBにおいて、国際対応を行うための仕様変更が議論されています。
>
> Databaseにcollationのための言語設定ができればいいんじゃないか、という議論のようですが、列ごとじゃなくていいのか、そもそもIndexedDBに列があるのかも含めて私はあまり知らないので、識者の方のご意見をお願いしたいです。
>
> すでに「言語だけじゃなくて、『ドイツの電話番号』のように国、言語、目的を設定できるべきだ」[1]などのフィードバックが付いていますので、英語のできる方は元のMLで直接議論いただけるとよいと思います。
>
> 難しいようであれば、ここで議論しても構いません。私はDatabaseはそれほど深くはないのでどこまで参加できるかわかりませんが、元MLに伝える努力はしてみます。
>
> [1] http://lists.w3.org/Archives/Public/public-webapps/2011JanMar/0601.html
>
> -----Original Message-----
> From: www-international-request@w3.org [mailto:www-international-request@w3.org] On Behalf Of Kang-Hao (Kenny) Lu
> Sent: Saturday, February 19, 2011 1:50 PM
> To: WWW International
> Subject: Fwd: [IndexedDB] Spec changes for international language support
>
> You might want to follow the thread at http://lists.w3.org/Archives/Public/public-webapps/2011JanMar/thread#msg599
>
> -------- Original Message --------
> Subject:
> [IndexedDB] Spec changes for international language support
> Resent-Date:
> Fri, 18 Feb 2011 02:40:43 +0000
> Resent-From:
> public-webapps@w3.org
> Date:
> Fri, 18 Feb 2011 02:38:26 +0000
> From:
> Pablo Castro <Pablo.Castro@microsoft.com>
> To:
> public-webapps WG <public-webapps@w3.org>
>
> We discussed international language support last time at the TPAC and I said I'd propose spec text for it. Please find the patch below, the changes mirror exactly the proposal described in the bug we have for tracking this:
> http://www.w3.org/Bugs/Public/show_bug.cgi?id=9903
>
> btw - the bug is assigned to Nikunj right now but I think that's just because of an editing glitch. Nikunj please let me know if you were working on it, otherwise I'll just submit the changes once I hear some feedback from this group.
>
> Thanks
> -pablo
>
>
> Left file: \IndexedDB Specs\20110217\Speclet_023_IDB_API_Asynchronous_APIs.original.html
> Right file: \IndexedDB Specs\20110217\Speclet_023_IDB_API_Asynchronous_APIs.html
> copy 6
> add 7
>            <dt>readonly attribute DOMString language</dt>
>            <dd>
>                On getting, this attribute MUST return the <a title="database language">language</a>
>                that is configured in this database for string collation. If no collation has been
>                configured for a database this value is <code>null</code> and the database will
>                use binary collation.
>            </dd>
> copy 6
> copy 6
> add 24
>            <dt>IDBRequest setLanguage()</dt>
>            <dd>
>                <p>
>                This method changes the <a title="database language">language</a> used by the database
>                for string collation. Note that this method must only
>                be called from a <a><code>VERSION_CHANGE</code></a> <a>transaction</a> callback.
>                </p>
>                <p class="note">
>                Changing the language in a database that already contains data typically involves reading and
>                re-writing the entire database and thus can be a time consuming operation.
>                </p>
>                <dl class="parameters">
>                    <dt>optional DOMString language</dt>
>                    <dd>The language to be used in the database specified as a language identifier as
>                    described in [[!BCP47]].</dd>
>                </dl>
>                <dl class="exception" title="IDBDatabaseException">
>                    <dt>NOT_ALLOWED_ERR</dt>
>                    <dd>This method was not called from a <a><code>VERSION_CHANGE</code></a> <a>transaction</a> callback.</dd>
>                    <dt>DATA_ERR</dt>
>                    <dd>The language parameter contained a string that was not a valid language identifier or was a language
>                    identifier not supported by the system.</dd>
>                </dl>
>            </dd>
> copy 6
>
>
>
> Left file: \IndexedDB Specs\20110217\Speclet_022_IDB_API_Synchronous_APIs.original.html
> Right file: \IndexedDB Specs\20110217\Speclet_022_IDB_API_Synchronous_APIs.html
> copy 6
> add 7
>            <dt>readonly attribute DOMString language</dt>
>            <dd>
>                On getting, this attribute MUST return the <a title="database language">language</a>
>                that is configured in this database for string collation. If no collation has been
>                configured for a database this value is <code>null</code> and the database will
>                use binary collation.
>            </dd>
> copy 6
> copy 6
> add 24
>            <dt>void setLanguage()</dt>
>            <dd>
>                <p>
>                This method changes the <a title="database language">language</a> used by the database
>                for string collation. Note that this method must only
>                be called from a <a><code>VERSION_CHANGE</code></a> <a>transaction</a> callback.
>                </p>
>                <p class="note">
>                Changing the language in a database that already contains data typically involves reading and
>                re-writing the entire database and thus can be a time consuming operation.
>                </p>
>                <dl class="parameters">
>                    <dt>optional DOMString language</dt>
>                    <dd>The language to be used in the database specified as a language identifier as
>                    described in [[!BCP47]].</dd>
>                </dl>
>                <dl class="exception" title="IDBDatabaseException">
>                    <dt>NOT_ALLOWED_ERR</dt>
>                    <dd>This method was not called from a <a><code>VERSION_CHANGE</code></a> <a>transaction</a> callback.</dd>
>                    <dt>DATA_ERR</dt>
>                    <dd>The language parameter contained a string that was not a valid language identifier or was a language
>                    identifier not supported by the system.</dd>
>                </dl>
>            </dd>
> copy 6
>
>
>
> Left file: \IndexedDB Specs\20110217\Speclet_020_IDB_API_Constructs.original.html
> Right file: \IndexedDB Specs\20110217\Speclet_020_IDB_API_Constructs.html
> copy 6
> add 4
>            Every <a>database</a> also has a <dfn title="database language">language</dfn> that indicates the
>            language that should be used for collating strings when comparing keys.
>          </p>
>          <p>
> copy 6
> copy 6
> delete 1
> add 2
>            value with no need to separate them by type. When comparing a <code>DOMString</code> with another <code>DOMString</code>, the <a>database
>            language</a> should be used to determine the specific collation rules to be used.
> copy 6
>
>
>
>
>



-- 
Toru Yoshikawa
mail: pikotea[at]gmail.com
twitter: yoshikawa_t
blog: http://d.hatena.ne.jp/pikotea/

Received on Sunday, 20 February 2011 21:28:16 UTC