CouchDB
公式サイトCouchDBとは
CouchDBは、Apacheソフトウェア財団が開発するドキュメント指向のデータベースです。MySQLのようにあらかじめ表の構造を決めるのではなく、項目の組み合わせが異なるデータをJSONという形式のまま保存できます。HTTPでそのまま読み書きできるAPIを備えているため、Webシステムとの連携が簡単なことも特徴です。また、複数のサーバーや端末の間でデータを同期する仕組みを標準で持っており、オフラインでも動作するアプリケーションの基盤として利用されることがあります。
弊社が採用する理由
弊社の基本はMySQLを使ったLAMP/LEMP構成ですが、データの形が案件ごとに大きく異なる場合や、項目が頻繁に増減する場合には、CouchDBを選択肢として検討します。たとえば、フォームの設問が案件ごとに変わるアンケートや、機器ごとに記録項目が異なる点検データなどは、表の構造を固定するより、ドキュメント単位でそのまま保存するほうが自然に扱えます。HTTPで直接データを読み書きできるため、PHPやNode.jsのどちらからも扱いやすく、既存構成に追加しやすいことも理由です。また、端末間のデータ同期機能は、通信が不安定な現場でも動作させたい業務アプリケーションで役に立ちます。すべてをCouchDBにするのではなく、MySQLと役割を分けて併用するのが弊社の基本的な考え方です。
向いている案件
- 案件や対象ごとに項目が変わるデータの保存
- 現場端末とサーバーの間でデータを同期する業務アプリケーション
- HTTP経由で直接読み書きしたいログや記録データ
- MySQLの表構造に収めにくい柔軟なデータの補助的な保存先
保守・移行の観点
CouchDBは表の構造を事前に固定しないため、保存されているデータの形がいつのまにか揺れてしまうことがあります。アプリケーション側で項目の規約を決め、資料に残しておくことが長期運用の要点です。データベース自体のバージョンは、他のソフトウェアと同様にサポートが継続している版を使い、OSの更新に合わせて移行を計画します。データの同期機能を使う場合は、複数の場所で同じデータを更新したときの競合を検出して解決する処理が必要になるため、その設計と検証をステージング環境で行います。バックアップと復元の手順を確認しておく点はMySQLと同様です。
組み合わせて使う技術
よくあるご質問
MySQLとCouchDBはどう使い分けますか?
顧客や注文など項目が決まっていて、集計や検索が多いデータはMySQLが向いています。項目が案件ごとに変わるデータや、端末間で同期したいデータはCouchDBが向いています。多くの場合は併用し、役割を分けます。
CouchDBを使うと開発費は上がりますか?
データベースの種類そのものより、要件の複雑さで費用は決まります。柔軟なデータを無理にMySQLの表に収めるより、CouchDBを使ったほうが設計が簡単になり、結果的に工数が減る場合もあります。
関連するサービス
関連する開発ガイド
- Excel・スプレッドシート業務をWebシステム化するタイミングExcelやスプレッドシートで回している業務が限界に近づくサイン、Webシステム化に向く業務と向かない業務の見分け方、段階的な移行とデータ移行の注意点を整理します。
- レンタルサーバー・VPS・クラウドの違いと選び方レンタルサーバー・VPS・クラウドの3種を、管理範囲・自由度・運用負荷の観点で比較し、中小企業のWebサイトや業務システムにどれが合うかを判断する考え方と、保守との関係を解説します。
- 納品後の保守・運用で何が必要かシステムは納品後も動かし続ける必要があります。監視、バックアップと復元テスト、OS・ミドルウェア・CMSのアップデート、ステージングでの検証、保守契約の範囲という基本を整理します。
関連用語: API、基本設計・詳細設計、保守運用、ステージング環境
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開