データストアは一般的にはデータベースと呼ばれるものです。しかしデータベースというとRDBMS(リレーショナルデータベース)なのに対して、mBaaSではドキュメント型のNoSQLとなっています。それによって、データの関連性についても多少異なる手法を使った方が良いようです。
今回はmBaaSにおける1対多のデータ管理法について紹介します。
ACLを使う方法
まず基本はACLを使う方法です。ACLとはアクセスコントールのことで、誰(またはどのグループ)が読み書きできるかを指定するものです。例えば自分しか読み書きできないデータとして設定すれば、それはセキュアに個人のデータとして管理されます。
ACLは複数指定できるので、自分だけでなくBさん、Cさん、Dさん…と指定することもできます。しかし管理が煩雑になるであろうことは予想がつくはずです。そこでロール(グループ)を使います。データの読み書きできるロールを指定することで、後はロールさえメンテナンスすれば読み書きできる対象を一括してコントロールできます。ロールとユーザを組み合わせることもできるので、あるデータに対してだけ読み込み、または書き込み権限を与えると言ったことも可能です。
配列を使う方法
1対多のデータを管理する際に、あえて別なクラス(データベースでのテーブル相当)を作らない選択肢もあります。mBaaSではカラムの中に配列を入れられるので、複数あるデータをまとめて入れてしまうことができます。この場合、ACLは1レコードのデータに依存します。
この方法は手軽な反面、メンテナンスが多少面倒になります。なおmBaaSでは配列操作を行うためのメソッドを多数用意していますので、ユニークであれば追加したり、指定した値を削除したりできます。
リレーションを使う
配列では管理しきれない、複雑なデータになったらリレーションを使うのが良いでしょう。リレーションは1対多の関連性を管理するための機能になります。これはあるクラスのデータ1件とあるクラスのデータ複数件を管理します。
リレーションの欠点としては、データを一度に取得できないということです。まず1件のデータを取得し、そのリレーションとして複数件のデータを取得します。取り出されたデータはデータストアのオブジェクトなので、扱うのに不便はないでしょう。もちろんACLとも組み合わせられます。
まとめ
1ユーザに依存するものであればACLを使うのが簡単です。ACLはログイン時に自動的に付与されるので、コードの変更も殆どいりません。簡単なデータで、新しいクラスを作るのが面倒であれば配列を使うのが良いでしょう。より複雑なデータであればリレーションが便利です。Todo管理やランキングなどであればACLで十分かと思います。
mBaaSではネットワークの通信回数を減らすのも大事です。mBaaSの特性を活かしたデータ管理法で快適なUXを提供してください。