ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

mBaaSのはまりやすいポイント徹底解説より「検索編」

mBaaSはアプリやWebアプリケーションにおいてバックエンドをまるっとまとめて提供する仕組みですが、スクラッチでのサーバサイド開発とは異なるので慣れるまでに多少手間取る部分も存在します。ニフティクラウド mobile backendでは日本語のサポート(Expertプランではテクニカルサポート、Basicプランではコミュニティサポート)を提供していますが、そのサポートに寄せられる質問の中でよくあるものをeBook「mBaaSの はまりやすいポイント徹底解説」としてまとめました。

今回はその中から検索編として、データストア(自由に構造が設計できるデータベース)の利用に関して取り上げたいと思います。

日付型の検索について

日付型の検索はISO 8601形式で行います。例えばcreateDateを検索条件に指定する場合は次のようになります。

Where = {"createDate":{"__type":"Date", "iso":"2014-03-06T07:09:11.856Z"}}

さらに日付とテキストを組み合わせた検索もサポートされています(AND検索またはOR検索)。

データストアでクラス同士を結合した検索

いわゆるSQLではINNER JOINが使えますが、データストアの場合はできません。そこで2つの代替案が提案しています。

案1:リレーションを使う

データストアではリレーションという仕組みが用意されています。相互のクラス間でリレーションを持ち合うことで、別なクラスのデータを参照できるようになります。

ただしこの方法の場合、参照先クラスを使った絞り込みは行えません。

案2:データを2カ所で管理する

そこであえてリレーションを使わずに他方のクラスに対してオブジェクトIDを保存してしまう方法があります。この方法の場合、それぞれのクラスで絞り込みを行った結果をプログラム側でマージすることで要望にあったデータの取得が可能になります。

スキーマレス(スキーマを定義しない)のデータベースの場合、一般的に多数のテーブル(データストアで言うとクラス)をリレーションで正規化するというのは行われません。データの重複をよしとして管理されることのが多いようです。そこで後々取り出したいデータの条件に合わせてクラスを設計するのがおすすめです。このあたりの従来型のデータベースの考え方と、スキーマレスのデータストアでの設計手法の違いがハマりやすいポイントかも知れません。


eBookではこの他、データのインポートやエクスポート、インスタレーション、会員管理、シグネチャの生成などについて解説しています。ぜひダウンロードしていただき、mBaaSをより快適に利用するのにご活用ください。