3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CEDEC 2014 - モバイル初のNoSQLを使ってみよう! Couchbase Lite

Last updated at Posted at 2015-03-26

CEDEC 2014 開催から半年ほど経過してしまいましたが
せっかくなので当時のレポートを公開しておこうと思います

概要

今年の5月にリリースされたばかりの最新技術かつモバイル初のNoSQLデータベースについて紹介します。
モバイル端末にデータを格納して、非同期でサーバとデータをやり取りするので、オフライン/オフラインに関わらず、
またネット回線が不安定な場合でもアプリユーザにストレスを感じさせることなくサービスを提供し続けることが可能です。
また、バックエンドで稼動するCouchbase Serverはダウンタイムやアプリケーションを変更することなく
クラスタの拡張/縮小が簡単に行え、Redis/TokyoTyrant/Flare等の
永続化KVSやmemcachedの代替としても利用することができます。
このセッションではモバイルとサーバを1つのソリューションとして紹介します。

アジェンダ

  1. モバイルNoSQL Couchbase Liteとは?
  2. Couchbase Liteの使い方
  3. Couchbase Liteを導入するにあたって

1.モバイルNoSQL Couchbase Liteとは?

  • ドキュメントベースのデータサーバ

  • CouchDBを商用化したような物

  • JSONでデータ管理が可能

  • ドキュメントベースのモバイルデータベース

  • CouchbaseとのSyncなどが簡単に行える

SQLiteとの違い

  • JSON形式でのデータ取り扱い(KVS)
  • スキーマレス
  • SDKによりネイティブAPIで操作可能、SQLを使う必要がない
  • 非同期で動作する、SQLiteは同期なので保存時になどに止まってしまう
  • サーバとSyncすることがあらかじめ考慮されている、
  • SyncGatewayを利用してユーザ同士のデータやり取りも可能、
    モバイルサイドのエンジニアだけで実装可能

Syncについて

Couchbase ServerとSyncGatewayを利用すれば簡単にデータをSyncできる
「チャンネル」を利用し、ユーザ同士でデータのやり取りを行う事ができる

  • JSON Anywhere
  • JSON on the deceive
  • JSON on the wire
  • JSON in the cloud

動作プラットフォーム

  • iOS
  • Android
  • PhoneGap
  • Xamarin(beta)
  • Microsoft.net(beta)
  • Unityは開発予定?→別端末でセーブとかが楽になる

2.Couchbase Liteの使い方

iOS版のGet Startedをやってみよう(ToDo Liteを動かす)

ToDo Lite Code Tour

Developerサイトにコード解説しているパートがある

3.Couchbase Liteを導入するにあたって

データの管理方法の再認識

  • 通常のテーブル型のDBと違って管理方法が変わってくる
    • テーブルが存在しない
    • リレーションを組まない

これがSQLiteでいうあれか?みたいな考えをしていると頭が固まって使いにくくなる

Viewの使い方を覚える必要がある

  • MapReduceでデータを集めてきてそれを利用してQueryを作成する
  • それを利用するための学習コストが発生する

モデル構成を考えておく

  • モデルをどのように構成するかが効率化の鍵
  • モデルの中にも出るクラスを指定して2重構造にすることも可能

Syncの活用

  • サーバAPIを呼ぶことなくSyncできるのは大きなメリット
  • 使い分けを考慮しつつ構成を考える

LiveQuery

  • 特定のクエリを監視し変更が行われたときに通知を出す機能
  • DBに変更があったら即反映が可能になる
  • Syncと組み合わせると協力

Couchbase Server

  • 単一障害点が存在しないマルチマスタ KVS

利用シーン

  • モデル、セッション、レンダリングなどのキャッシュストレージとして(memchacheのかわり)
  • ユーザーデータの永続か保存領域として
  • Sync Gatewayを使ってスマートフォンDBのバッグエンドとして

Couchbaseの二つのストレージ

  • Memcached:オンメモリKVS
  • Couchbase:ディスクに保存する永続化KVS

サーバークラスタに複数のvBucketsを保持

Couchbaseを採用している企業

  • 全世界で400社以上の企業で、10,000台以上の稼働実績

HA

  • クラスタへの多重レプリケーション

Replication

  • クラスタ内に指定した数のレプリカデータを保持し、
  • ノード障害時のデーター損失を回避
  • マルチマスタという

Rebalance

  • クラスタに新規サーバの追加する際など、
  • クラスタの構成変更にあわせ「リバランス」を行い
  • 既存のデータの分散再配置を行う
  • 新しく増えた1台のサーバにデータを分散してくれる

Failover

  • Nodeが死亡した場合レプリカ数をKeep
  • マニュアルでのNodeの新規追加、もしくは復帰により戻ってきた場合には
  • 再リバランスにより、縮退運転からリカバリ

Administration

  • web管理画面が存在するから楽です
  • コマンドラインで管理する事もできる
  • DATA BUCKETSの性能監視が可能

Sync gateway

  • スマートフォンとクラスタを同期するゲートウェイ
    • Sync Funtion APIsを使って動的なデータの同期を行う
    • 容易な管理
    • スケーラビリティ
    • 開発速度を高める
    • スケールによって大規模ユーザを扱うサービスをサポート

質疑応答

  • クライアント側でSyncした際にサーバ側でもSyncされるデータの形式は?

    • 送られるデータも保存するデータもJSONです
    • 通信時はSSLなどを使って暗号化する
  • ソーシャルゲームだとSSLで暗号化しても解析されてしまうがチート対策はある?

    • あるがKVS的な使い方になる
  • 保存したドキュメントのリビジョンを持っている

    • バージョン管理されているので
    • セーブデータが壊れたり改ざんされたりしたときに一個前のデータを取り出す事も可能
  • クライアントとの同期中にネットワークが切れたりしたらどうなる?SDKでサポート?

    • ネットーワークが切れると同期されないが
      送ってしまったデータがどうなるかは、サーバー側でマージが可能
    • 失敗はわかる、マージはプログラマ側でコントロールする
    • SDKを使っていれば意識しなくていい
    • 例えば地下鉄に入ったときなど
    • 同期中に切れた場合は問題ない
    • 同期前に切れた場合はローカルに保存しておいて電波を発見したときに送信する事になる
    • SDKでラップされているので大丈夫
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?