2010年11月19日金曜日

HTML5のローカルDBを使う場合の問題点

Cenaというフレームワーク、のようなものを作ってますが・・・
なぜCenaを作る|使うのか?

HTML5が登場し、ブラウザーにローカルデータベースが出来たことで、ウェブアプリケーションの機能が飛躍的に向上します。サーバーと通信することなく、大量のデータを変更したり追加することが可能となります。リレーショナルデータベースを扱えるので、複雑な構造のデータでも扱える利点があります。

ただし、ローカルデータベースを使った場合、
難しい問題がいくつかあります。

データのシンクロにおける問題

ローカルで作成したデータをサーバーにアップロードする際、リレーションを保つのが難しいです。

たとえば、新たにデータを追加したうえで、既存のデータをリンクさせる場合です。新しいデータにはIDが振られていません。サーバーにアップロードするとIDが振りなおされるため、リレーションが切れてしまいます。

複数デバイスの更新問題

複数のクライアントにデータをダウンロードして、アップロードした場合にどうなるのか?

たとえばデバイスAとBがあったとします。
まずデバイスAとBの両方にデータをダウンロード。
次にデバイスAでデータ1を修正、アップロード。
そしてデバイスBでデータ2を修正、アップロード。

そのとき、データ1はどうなるのでしょう?
デバイスBのデータ1には、デバイスAの修正は反映されてません。このデータを全てアップロードすると、データ1は元のデータに戻ってしまいます。

つまり修正したデータのみをアップロードする必要があります。

Cenaフレームワーム

Cenaは上記二つの問題を解決するために開発しています。
汎用性のある解決法だと思っていますが、クライアント(HTML5)とサーバーの両方で対応する必要があります。

0 件のコメント: