BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Dropbox が Datastore APIで構造化したデータを保存できるようになった

Dropbox が Datastore APIで構造化したデータを保存できるようになった

原文(投稿日:2013/07/11)へのリンク

Dropbox がリリースしたDatastore APIは、ユーザーのDropboxアカウントを使い、自動的なコンフリクト解決によって、デバイス間での同期をサポートするキー-値型のデータストアへのアクセスを提供する。

Datastore API によって、アプリケーションは、構造化されたデータをユーザーのDropbox アカウントに保存できる。このために、様々なデバイス間における変更の同期化のサポートが組み込まれており、そして自動的なコンフリクト解決手段が備わっている。APIは、オフライン動作をサポートしており、インターネット接続が復帰するとアップデートを行う。

Datastore は、IDとフィールドのセットからなるレコードを持つテーブルで構成されている。各フィールドは、名前と値を持っている。サポートされる値の型は以下の通りだ。

  • String
  • Boolean
  • Integer、 符号付き64ビット。
  • Floating point、IEEE 倍精度
  • Date、POSIX ミリ秒のタイムスタンプ
  • Bytes、画像や圧縮されたデータなどのようなバイナリデータ。各レコードは、100キロバイトのサイズ制限があるので、より大量のデータを記憶するにはSync APIを介してアクセスするDropboxのファイルを使用して行うことができる。フィールドは、ファイルへの参照を持つことになる。
  • List、上記の値のリスト。他のリストを持つことはできない。以下の基本的な操作をサポートする。 put, move, insert, delete。

データストアには、スキーマが無いが、レコードは異なる数のフィールドを持つできる。しかし、「クエリ出来るように、テーブル内のすべてのレコードは大体同数のフィールドを持つ」ことが推奨されている。開発者のニーズに対応するように、複数のテーブルとデータストアを作成することができる。

アプリケーションは、ユーザーのストレージクォータを使用しない場合、データストア全体で5メガバイトに制限されている。その制限を超えると、アプリケーションはユーザのDropboxのクォータを使い始め、その上限に達した場合は、書き込みはできなくなる。

以下はAndroid の例でデフォルトのデータ・ストアをオープンし、新しいテーブルを作成し、2つのフィールド、tasknamecompletedを持つ新しいレコードを挿入し、次にメモリ内のデータをDropboxに同期する方法を示している。

DbxDatastore store = DbxDatastore.openDefault(mAccount);
DbxTable tasksTbl = store.getTable("tasks");
DbxRecord firstTask = tasksTbl.insert().set("taskname", "Buy milk").set("completed", false);
store.sync();

同期操作が行われると、登録されたリスナーに通知されるので、必要に応じて処理できる。こうして、データストア操作がデバイス間で伝搬していく。

Dropbox は、Android, iOS、JavaScript用のSDKを提供している。APIはベータで、Dropboxの予想では、 「APIは数週間で安定する」。

Dropbox は、iOS用のSync Component for Xamarin を提供しており、C#からデータストアにアクセスできる。Xamarinのデモビデオがいかに速く変更がデバイス間で伝搬していくかを示している。

この記事に星をつける

おすすめ度
スタイル

BT