本文へ移動
Unlogical Systems

Ctrl / ⌘ + K でも開けます

    Unlogical Systems

    CouchDB を採用する理由

    CouchDBはJSON形式でデータを保存するドキュメント指向データベースです。弊社がCouchDBを選ぶ場面、MySQLとの使い分け、運用時の注意点を解説します。

    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を使ったほうが設計が簡単になり、結果的に工数が減る場合もあります。

    関連するサービス

    関連する開発ガイド

    関連用語: API基本設計・詳細設計保守運用ステージング環境

    監修: Unlogical Systems合同会社杉並区・西荻窪)公開

    まずは現場のエンジニアにご相談ください

    営業担当ではなく、実際に設計・開発を行うエンジニアが直接お答えします。ご相談・お見積りは無料、1営業日以内にご回答いたします。

    無料でご相談・お見積り

    資料の添付は、送信後に届く受付メールへの返信でお送りいただけます。

    相談・見積りは無料
    1営業日以内にご回答します

    無料で相談する