Apache CouchDB


Apache_CouchDB

Apache CouchDBは、Erlangで実装されたオープンソースの ドキュメント指向の NoSQLデータベースです。 Apache CouchDB CouchDBのFauxton管理インターフェース、ユーザーデータベース
原作者
ダミアン・カッツ、ジャン・レーナルト、ナオミ・スレーター、クリストファー・レンツ、J。クリス・アンダーソン、ポール・デイビス、アダム・ココロスキ、ジェイソン・デイビス、ブノワ・チェスノー、フィリペ・マナナ、ロバート・ニューソン
開発者
Apache Software Foundation
初回リリース
2005 ; 16年前 (2005)
安定リリース
3.1.1   / 2020年9月17日 ; 12ヶ月前  (2020年9月17日)
リポジトリ
github .com / apache / couchdb
で書かれている
Erlang、JavaScript、C、C ++
オペレーティング・システム
クロスプラットフォーム
タイプ
ドキュメント指向データベース
ライセンス
Apacheライセンス2.0
Webサイト
couchdb .apache .org 
CouchDBは、複数の形式とプロトコルを使用して、データを保存、転送、および処理します。JSONを使用してデータを保存し、JavaScriptをMapReduceを使用してクエリ言語として使用し、HTTPをAPIに使用します。
CouchDBは2005年に最初にリリースされ、その後2008年にApache SoftwareFoundationプロジェクトになりました。
リレーショナルデータベースとは異なり、CouchDBデータベースはデータとリレーションシップをテーブルに格納しません。代わりに、各データベースは独立したドキュメントのコレクションです。各ドキュメントは、独自のデータと自己完結型のスキーマを維持します。アプリケーションは、ユーザーの携帯電話に保存されているデータベースとサーバーに保存されているデータベースなど、複数のデータベースにアクセスできます。ドキュメントメタデータにはリビジョン情報が含まれているため、データベースの切断中に発生した可能性のある差異をマージできます。
CouchDBは、マルチバージョン同時実行制御(MVCC)の形式を実装しているため、書き込み中にデータベースファイルをロックしません。競合は、解決するためにアプリケーションに任されています。競合を解決するには、通常、最初にデータをドキュメントの1つにマージし、次に古いドキュメントを削除する必要が
その他の機能には、結果整合性を備えたドキュメントレベルのACIDセマンティクス、(インクリメンタル)MapReduce、および(インクリメンタル)レプリケーションが含まれます。CouchDBの際立った機能の1つはマルチマスターレプリケーションです。これにより、マシン間で拡張して高性能システムを構築できます。Fauxton(以前のFuton)と呼ばれる組み込みのWebアプリケーションは、管理に役立ちます。

コンテンツ
1 歴史
2 主な特徴
3 ユースケースと本番環境の展開
3.1 ユーザー
4 データ操作:ドキュメントとビュー
4.1 HTTP経由でデータにアクセスする 5 PouchDB 6 オープンソースコンポーネント
7 も参照してください
8 参考文献
9 参考文献
10 外部リンク

歴史
Couchは、信頼性の低いコモディティハードウェアのクラスターの頭字語です。 CouchDBプロジェクトは、IBMの元LotusNotes開発者であるDamienKatzによって2005年4月に作成されました。彼はこのプロジェクトにほぼ2年間自己資金を提供し、GNU General PublicLicenseの下でオープンソースプロジェクトとしてリリースしました。
2008年2月に、それはApache Incubatorプロジェクトになり、代わりにApacheライセンスの下で提供されました。数ヶ月後、それはトップレベルのプロジェクトに卒業しました。これにより、2010年7月に最初の安定バージョンがリリースされました。
2012年の初めに、Katzはプロジェクトを離れ、CouchbaseServerに焦点を合わせました。
Katzの出発以来、Apache CouchDBプロジェクトは継続され、2012年4月に1.2、2013年4月に1.3をリリースしました。2013年7月、CouchDBコミュニティは、CloudantのクラスターバージョンであるBigCouchのコードベースをApacheプロジェクトに統合しました。 BigCouchクラスタリングフレームワークは、ApacheCouchDBの現在のリリースに含まれています。
ネイティブクラスタリングはバージョン2.0.0でサポートされています。また、新しいMango Query Serverは、JavaScriptやMapReduceを使用せずにCouchDBクエリを実行するためのシンプルなJSONベースの方法を提供します。

主な特徴
ACIDセマンティクス
CouchDBはACIDセマンティクスを提供します これは、マルチバージョン同時実行制御の形式を実装することによって行われます
。つまり、CouchDBは、競合することなく、大量の同時リーダーとライターを処理できます。
オフライン用に構築
CouchDBは、オフラインになり、デバイスがオンラインに戻ったときにデータ同期を処理できるデバイス(スマートフォンなど)に複製できます。
レプリケーションを備えた分散アーキテクチャ
CouchDBは、双方向レプリケーション(または同期)とオフライン操作を念頭に置いて設計されました。つまり、複数のレプリカが同じデータの独自のコピーを持ち、それを変更して、後でそれらの変更を同期することができます。
ドキュメントストレージ
CouchDBは、データを「ドキュメント」として、JSONとして表される1つ以上のフィールド/値のペアとして格納しフィールド値は、文字列、数値、日付などの単純なものにすることができます。ただし、
順序付きリストと
連想配列も使用できます。CouchDBデータベース内のすべてのドキュメントには一意のIDがあり、必要なドキュメントスキーマはありません。
結果整合性
CouchDBは、可用性とパーティションの許容範囲の両方を提供できるように結果整合性を保証
します。
ビューとインデックスのマッピング/削減
保存されたデータは、ビューを使用して構造化されます。CouchDBでは、各ビューは、map / reduce操作の半分のMapとして機能するJavaScript関数
によって構築されこの関数はドキュメントを受け取り、それを単一の値に変換して返します。CouchDBは、ビューにインデックスを付け、ドキュメントが追加、削除、または更新されたときにそれらのインデックスを更新し続けることができます。 HTTP API すべてのアイテムには、HTTPを介して公開される一意のURIがすべてのリソースに対する4つの基本的なCRUD(作成、読み取り、更新、削除)操作にHTTPメソッドPOST、GET、PUT、およびDELETEを
使用し CouchDBは、Futonと呼ばれるWeb経由でアクセスできる組み込みの管理インターフェースも提供します。

ユースケースと本番環境の展開
CouchDBのレプリケーションおよび同期機能は、ネットワーク接続が保証されておらず、アプリケーションがオフラインで動作し続ける必要があるモバイルデバイスでの使用に最適です。
CouchDBは、事前定義されたクエリが実行され、バージョン管理が重要なデータを蓄積し、時々変更するアプリケーション(CRM、CMSシステムなど)に最適です。マスター-マスターレプリケーションは特に興味深い機能であり、マルチサイト展開を簡単に行うことができます。

ユーザー
CouchDBのユーザーは次のとおりです。
Amadeus IT Group、一部のバックエンドシステム。
Credit Suisse、商品部門での市場フレームワークの内部使用。
Meebo、ソーシャルプラットフォーム(Webおよびアプリケーション)用。 MeeboはGoogleに買収され、ほとんどの製品は2012年7月12日にシャットダウンされました。
npm、パッケージレジストリ用。
ソフォス、一部のバックエンドシステム用。
BBC、その動的なコンテンツプラットフォーム用。
Canonicalは2009年に同期サービス「UbuntuOne」で使用を開始しましたが、2011年11月に使用を停止しました。
CANAL +海外の国際オンデマンドプラットフォーム用のCANAL +。
Protogrid、迅速なアプリケーション開発フレームワークのストレージバックエンドとして

データ操作:ドキュメントとビュー
CouchDBは、JSONドキュメントのコレクションを管理します。ドキュメントはビューを介して整理されます。ビューは集計関数で定義され、フィルターはMapReduceと同様に並行して計算されます。
ビューは通常、データベースに保存され、そのインデックスは継続的に更新されます。CouchDBは、外部ソケットサーバーとJSONベースのプロトコルを使用するビューシステムをサポートします。結果として、ビューサーバーはさまざまな言語で開発されています(JavaScriptがデフォルトですが、PHP、Ruby、Python、Erlangもあります)。

HTTP経由でデータにアクセスする
アプリケーションはHTTP経由でCouchDBと対話します。以下に、コマンドラインユーティリティであるcURLを使用したいくつかの例を示します。これらの例は、CouchDBがポート5984のローカルホスト(127.0.0.1)で実行されていることを前提としています。
アクション
リクエスト
応答
サーバー情報へのアクセス
カールhttp://127.0.0.1:5984/
{ “couchdb” : “ようこそ” 、 “バージョン” :”1.1.0″ }
wikiという名前のデータベースを作成する
curl -X PUT http://127.0.0.1:5984/wiki
{ “ok” : true }
wikiという名前の2番目のデータベースを作成しようとしています
curl -X PUT http://127.0.0.1:5984/wiki
{ “エラー” :”file_exists” 、 “理由” :”データベースを作成できませんでした。ファイルは既に存在します。” }
wikiデータベースに関する情報を取得する
カールhttp://127.0.0.1:5984/wiki
{ “db_name” : “wiki” 、 “doc_count” : 0 、 “doc_del_count” : 0 、 “update_seq” : 0 、 “purge_seq” : 0 、 “compact_running” : false 、 “disk_size” : 79 、 “instance_start_time” : ” 1272453873691070 ” 、 ” disk_format_version ” : 5 }
データベースwikiを削除します
curl -X DELETE http://127.0.0.1:5984/wiki
{ “ok” : true }
ドキュメントを作成し、CouchDBにドキュメントIDの提供を依頼します
curl -X POST -H “Content-Type:application / json” –data ‘{“text”: “Wikipedia on CouchDB”、 “rating”:5}’ http://127.0.0.1:5984/wiki
{ “ok” : true 、 “id” : “123BAC” 、 “rev” : “946B7D1C” }

PouchDB
PouchDBはそれと互換APIでのCouchDBのJavaScript実装です。したがって、サーバー側でCouchDBを使用し、アプリケーション自体でPouchを使用できます。アプリケーションがオンラインになると、両方を同期できます。これは、オフラインファーストアプローチに依存するプログレッシブWebアプリケーションで特に役立ちます。

オープンソースコンポーネント
CouchDBには、デフォルトのパッケージの一部として他の多くのオープンソースプロジェクトが含まれています。
成分 説明 ライセンス
Erlang Erlangは、汎用の並行 プログラミング言語およびランタイムシステムです。アーランのシーケンシャルなサブセットは、関数型言語との厳密な評価、単一の割り当て、および動的型付け Apache 2.0(リリース18.0以降)Erlangパブリックライセンス(以前のリリース)
ICU International Components for Unicode(ICU)は、Unicodeサポート、ソフトウェアの国際化、およびソフトウェアのグローバル化のための成熟したC / C ++およびJavaライブラリのオープンソースプロジェクトです。
Unicodeライセンス
jQuery jQueryは、JavaScriptとHTML間の相互作用を強調する軽量のクロスブラウザ JavaScriptライブラリです。 MITライセンス
OpenSSL OpenSSLは、SSLおよびTLSプロトコルのオープンソース実装です。コアライブラリ(Cプログラミング言語で記述)は、基本的な暗号化機能を実装し、さまざまなユーティリティ機能を提供します
Apache1.0および4節のBSDライセンス
クモザル SpiderMonkeyは、MozillaFoundationによって管理されているパフォーマンスの高いJavaScriptエンジンです。インタプリタ、JITコンパイラ、ガベージコレクタが含まれています MPL 2.0

も参照してください
image"
 無料のオープンソースソフトウェアポータル
ドキュメント指向データベース
XMLデータベース

参考文献
^ 「リリース3.1.1」。
^ Apache SoftwareFoundation。「ApacheCouchDB」。
^ スミス、ジェイソン。「CouchDBレプリケーションプロトコルとは何ですか?Gitのようなものですか?」。StackOverflow。スタック交換。
^ 「CouchDBの探索」。DeveloperWorks。IBM。
^ mail-archives.apache.orgでのApacheメーリングリストの発表
^ Re:提案された解決策: mail-archives.apache.orgでCouchDBTLPを確立する
^ 「CouchDBNoSQLデータベースが本番環境で使用できるようになりました」、2010年7月のPCWorldの記事
^ カッツ、ダミアン。「CouchDBの未来」。
^ スレーター、ノア。「ようこそBigCouch」。
^ “” ‘ 2.0 ‘ “” 。
^ CouchDBの、技術概要 アーカイブで2011年10月20日、ウェイバックマシン
^ 「CouchDBTheDefinitiveGuide」の「WelcometoFuton」
^ カサンドラMongoDBの対CouchDBの対Redisの対Riakに対HBaseの比較対クリストフコバチから
^ 「野生でCouchDBの」 アーカイブで2017年7月20日ウェイバックマシンの製品のWebの記事、CouchDBのを使用してソフトウェアプロジェクトやウェブサイトのリストを
^ カトラー、キムマイ「Meeboは古典的なGoogleAcq-hireの扱いを受ける:ほとんどの製品はすぐにシャットダウンする」。TechCrunch。AOLInc 。
^ 「npm-registry-couchapp」。GitHub。npm。
^ フォールトトレラントでスケーラブルなマルチデータセンターのKey-ValueストアとしてのBBCのCouchDB
^ Elliot Murphy(Canonical) から2011-05-05にアーカイブされたWaybackMachineからCouchDB-Develリストへの電子メール
^ Canonical Drops CouchDB From Ubuntu One(Slashdot)
^ ^ ビューServerのドキュメント アーカイブで2008年10月20日ウェイバックマシンwiki.apache.orgに

参考文献
アンダーソン、J。クリス; スレーター、ノア; Lehnardt、1月(2009年11月15日)、CouchDB:The Definitive Guide(第1版)、O’Reilly Media、p。300、ISBN 978-0-596-15816-3
Lennon、Joe(2009年12月15日)、Beginning CouchDB(第1版)、Apress、p。300、ISBN 978-1-4302-7237-3、2010年12月5日にオリジナルからアーカイブ、
Holt、Bradley(2011年3月7日)、CouchDBでのMapReduceビューの作成とクエリ(第1版)、O’Reilly Media、p。76、ISBN 978-1-4493-0312-9
Holt、Bradley(2011年4月11日)、Scaling CouchDB(第1版)、O’Reilly Media、p。72、ISBN 978-1-4493-0343-3
ブラウン、MC(2011年10月31日)、CouchDB入門(第1版)、O’Reilly Media、p。50、ISBN 978-1-4493-0755-4
Thompson、Mick(2011年8月2日)、Getting Started with GEO、CouchDB、およびNode.js(第1版)、O’Reilly Media、p。64、ISBN 978-1-4493-0752-3

外部リンク
公式サイト
CouchDB:決定的なガイド
完全なHTTPAPIリファレンス
CouchDBと通信するためのシンプルなPHP5ライブラリ
Java用の非同期CouchDBクライアント
Scala用の非同期CouchDBクライアント
Lehnardt、1月(2008)。「10,000フィートのCouchDB」。Erlang eXchange2008 。
レンハルト、1月(2009)。「Erlang開発者向けのCouchDB」。Erlang Factory London2009。
カッツ、ダミアン。「CouchDBと私」。RubyFringe。InfoQ。