Bucket と KiiObject

Kii Cloud 上にデータを作成するには、各スコープに紐付いた Bucket を作成し、その内部に KiiObjectを格納します。

これらの機能の全体像は「はじめに」の モバイル向け機能 で紹介しています。先にこちらをご覧ください。

Bucket

「はじめに」に示すように、Bucket は、アプリケーションスコープ、ユーザースコープ、グループスコープのいずれかに作成します。IoT ソリューションでは Thing スコープにも作成できます。

アプリケーションスコープでは、全ユーザーから共通してアクセスできる Bucket を作成できます。ユーザースコープとグループスコープでは、それぞれのユーザーやグループに対応付けて Bucket を作成できます。

Bucket を使うことで様々な利点が生じます。以下に Bucket を使用する目的を挙げます。

  • データ整理のため

    KiiObject として格納するデータを、サービスで使いやすいように整理することができます。

  • 検索のため

    KiiObject を検索する際は、Bucket ごとに検索クエリーを実行します。1 つの検索クエリーでまとめて検索したい KiiObject を 1 つの Bucket に格納しておくことで、条件に合った KiiObject を取得できます。

  • セキュリティのため

    Buket 単位で ACL ベースのアクセス権を設定できます。特定のユーザーやグループにだけアクセスさせたいデータを 1 つの Bucket に格納し、適切な ACL を設定することで、セキュリティのカスタマイズが容易になります。

KiiObject

KiiObject は JSON ドキュメント(キーと値のペア)と Object Body(ファイル)を持つことができるデータ構造です。

  • JSON ドキュメント(キーと値のペア)

    Kii Cloud SDK では、キーと値のペアとして JSON ドキュメントの値を読み書きする機能を提供します。Kii Cloud SDK では、object.set(key, value) のようなメソッドを使って JSON ドキュメントにアクセスすることで、JSON が持つデータ表現の自由度を保持したまま、シンプルな実装を実現します。JSON パーサーも不要です。

    キーと値のペアを設定する際は、JSON オブジェクトを値として設定できるため、複数階層を持った JSON を使ってデータを表現することもできます。

    Kii Cloud 上では JSON ドキュメントとして扱われるため、プラットフォームによるデータ表現の差違も吸収できます。Android で書き込んだデータを iOS で読み込むようなことも簡単に実現できます。

  • Object Body

    Object Body はファイルなどの大きなデータを KiiObject に添付する仕組みです。

    機能の概要は、後続のページ Object Body の利用 で説明します。

設計の自由度

Bucket と KiiObject の設計次第で、構築したいサービスの仕様に合わせた様々なデータ構造を実現できます。

たとえば、チャットのようなサービスを構築する際、設定データとメッセージを保存したいとします。設定データはユーザーごとに記憶させたいためユーザースコープの Bucket に、メッセージはユーザー間で共有したいためグループスコープの Bucket にそれぞれ保存すれば、適切にデータを扱うことができます。

また、健康管理アプリのように自分の測定データを共有したくない場合は、ユーザースコープの Bucket に格納すれば、他のユーザーからの参照を禁止することもできます。

Bucket へのアクセスはスケールするように設計されています。全ユーザーが単一 Bucket に集中してアクセスするようなボトルネックを発生させない限り、ユーザー数が増加してもパフォーマンスへの影響はありません。

データ構造を構築する際に必要な処理は、モバイルアプリからのデータ保存だけです。
サーバー側の実装や管理者による設定も不要であるため、クライアントの実装チームだけで、すぐに目的の機能を実現できます。


この機能の詳細は...

  • Bucket と KiiObject の操作については、リファレンスガイドの「Bucket」(AndroidiOSJavaScriptREST)、および、「KiiObject」(AndroidiOSJavaScriptREST)を参照してください。
  • KiiObject を使ったデータ表現では、データの意味づけによりツリーやグラフなどのデータ構造を表現することもできます。データ構造の例は、「データ構造の構築」(AndroidiOSJavaScriptREST)を参照してください。