Table Of ContentApache CouchDB
Release 2.1.0
Feb 10, 2018
Contents
1 Introduction 1
1.1 TechnicalOverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 DocumentStorage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 ACIDProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Compaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.4 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.5 SecurityandValidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.6 DistributedUpdatesandReplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.7 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 WhyCouchDB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Relax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 ADifferentWaytoModelYourData. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.3 ABetterFitforCommonApplications . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.4 BuildingBlocksforLargerSystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.5 CouchDBReplication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.6 LocalDataIsKing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.7 WrappingUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 EventualConsistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.1 WorkingwiththeGrain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2 TheCAPTheorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3 LocalConsistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.5 DistributedConsistency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.6 IncrementalReplication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.7 CaseStudy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.8 WrappingUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 GettingStarted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.1 AllSystemsAreGo! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.2 WelcometoFauxton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.3 YourFirstDatabaseandDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.4 RunningaQueryUsingMapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.5 TriggeringReplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.6 WrappingUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.5 TheCoreAPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.5.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.5.2 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.5.3 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.4 Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.5.5 WrappingUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.6 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
i
1.6.1 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.6.2 AuthenticationDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.6.3 Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.7 cURL:YourCommandLineFriend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2 Installation&First-TimeSetup 41
2.1 InstallationonUnix-likesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.1 InstallationusingtheApacheCouchDBconveniencebinarypackages . . . . . . . . . . 41
2.1.2 Installationfromsource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.1.3 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.1.4 Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.1.5 UserRegistrationandSecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.6 FirstRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.7 RunningasaDaemon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2 InstallationonWindows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2.1 Installationfrombinaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2.2 Installationfromsources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3 InstallationonmacOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3.1 InstallationusingtheApacheCouchDBnativeapplication . . . . . . . . . . . . . . . . 47
2.3.2 InstallationwithHomebrew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.3.3 Installationfromsource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4 InstallationonFreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.1 Installationfromports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5 InstallationviaDocker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.6 InstallationviaSnap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7 First-TimeSetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.7.1 SingleNodeSetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.7.2 ClusterSetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.8 UpgradingfromCouchDB1.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.8.1 couchuputility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.8.2 ManualCouchDB1.xmigration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.9 TroubleshootinganInstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.9.1 FirstInstall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.9.2 QuickBuild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.9.3 Upgrading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.9.4 RuntimeErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3 ConfiguringCouchDB 57
3.1 IntroductionIntoConfiguring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.1.1 Configurationfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.1.2 Parameternamesandvalues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.1.3 Settingparametersviatheconfigurationfile . . . . . . . . . . . . . . . . . . . . . . . . 58
3.1.4 SettingparametersviatheHTTPAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2 BaseConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.1 BaseCouchDBOptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3 ConfiguringClustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.3.1 ClusterOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4 couch_peruser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.1 couch_peruserOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.5 CouchDBHTTPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.5.1 HTTPServerOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.5.2 SecureSocketLevelOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.5.3 Cross-OriginResourceSharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.5.4 VirtualHosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.5.5 X-Frame-Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.6 AuthenticationandAuthorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.6.1 ServerAdministrators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.6.2 AuthenticationConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
ii
3.7 CompactionConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.7.1 DatabaseCompactionOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.7.2 CompactionDaemonRules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.7.3 ConfigurationofCompactionDaemon . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.7.4 ViewsCompactionOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.8 Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.8.1 Loggingoptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.9 Replicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.9.1 ReplicatorDatabaseConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.10 QueryServers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.10.1 QueryServersDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.10.2 QueryServersConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.10.3 NativeErlangQueryServer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.11 ExternalProcesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.11.1 OSDaemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.11.2 OSDaemonssettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.11.3 Updatenotifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.12 HTTPResourceHandlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.12.1 GlobalHTTPHandlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.12.2 DatabaseHTTPHandlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.12.3 DesignDocumentsHTTPHandlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.13 CouchDBInternalServices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.13.1 CouchDBDaemonizedMiniApps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.14 MiscellaneousParameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.14.1 ConfigurationofAttachmentStorage. . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.14.2 StatisticCalculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.14.3 UUIDsConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.14.4 Vendorinformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.14.5 Content-Security-Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.15 ProxyingConfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.15.1 CouchDBAsProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4 Replication 95
4.1 IntroductiontoReplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.1.1 TriggeringReplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.1.2 ReplicationProcedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.1.3 Master-Masterreplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.1.4 ControllingwhichDocumentstoReplicate . . . . . . . . . . . . . . . . . . . . . . . . 96
4.1.5 MigratingDatatoClients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.2 CouchDBReplicationProtocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.2.1 Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.2.2 ReplicationProtocolAlgorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.2.3 ProtocolRobustness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.2.4 ErrorResponses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.2.5 Optimisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.2.6 APIReference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.2.7 Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.3 ReplicatorDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.3.1 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.3.2 Documentsdescribingthesamereplication . . . . . . . . . . . . . . . . . . . . . . . . 126
4.3.3 ReplicationScheduler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.3.4 Replicationstates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.3.5 CompatibilityMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.6 Cancelingreplications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.7 Serverrestart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.8 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.9 AdditionalReplicatorDatabases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.10 Replicatingthereplicatordatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
iii
4.3.11 Delegations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.3.12 SelectorObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.4 Replicationandconflictmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.4.1 CouchDBreplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.4.2 Conflictavoidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.4.3 Revisiontree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.4.4 Workingwithconflictingdocuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.4.5 MultipledocumentAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.4.6 Viewmapfunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.4.7 Mergingandrevisionhistory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.4.8 Comparisonwithotherreplicatingdatastores . . . . . . . . . . . . . . . . . . . . . . . 138
5 CouchDBMaintenance 143
5.1 Compaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.1.1 DatabaseCompaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.1.2 ViewsCompaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.1.3 AutomaticCompaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.2 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.2.1 DiskI/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.2.2 SystemResourceLimits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.2.3 Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.2.4 CouchDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.2.5 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6 DesignDocuments 151
6.1 DesignDocuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.1.1 ViewFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.1.2 ShowFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.1.3 ListFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.1.4 UpdateFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.1.5 FilterFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.1.6 ValidateDocumentUpdateFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.2 GuidetoViews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.2.1 IntroductiontoViews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.2.2 ViewsCollation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
6.2.3 JoinsWithViews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.2.4 ViewCookbookforSQLJockeys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6.2.5 PaginationRecipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7 CouchDBExternalsAPI 193
7.1 TheNewHotness. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.2 Howdoesitwork? -HTTPProxying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.3 Howdoesitwork? -OSDaemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.3.1 ConfigurationAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.3.2 LoggingAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.3.3 DynamicDaemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.4 Neat. ButSoWhat? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8 QueryServer 197
8.1 QueryServerProtocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.1.1 reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.1.2 add_lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.1.3 add_fun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.1.4 map_doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.1.5 reduce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.1.6 rereduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.1.7 ddoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
8.1.8 Returningerrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.1.9 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
iv
8.2 JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.2.1 Designfunctionscontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.2.2 CommonJSModules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.3 Erlang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
9 Fauxton 219
9.1 FauxtonSetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.1.1 FauxtonVisualGuide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.1.2 DevelopmentServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.1.3 UnderstandingFauxtonCodelayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
10 APIReference 221
10.1 APIBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
10.1.1 RequestFormatandResponses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
10.1.2 HTTPHeaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
10.1.3 JSONBasics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
10.1.4 HTTPStatusCodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
10.2 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.2.1 /. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.2.2 /_active_tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
10.2.3 /_all_dbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
10.2.4 /_cluster_setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
10.2.5 /_db_updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
10.2.6 /_membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
10.2.7 /_replicate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
10.2.8 /_scheduler/jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
10.2.9 /_scheduler/docs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
10.2.10 /_restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
10.2.11 /_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
10.2.12 /_utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
10.2.13 /_uuids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
10.2.14 /favicon.ico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
10.2.15 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
10.2.16 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
10.3 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.3.1 /db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
10.3.2 /db/_all_docs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
10.3.3 /db/_bulk_docs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
10.3.4 /db/_find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3.5 /db/_index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.3.6 /db/_explain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
10.3.7 /db/_changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
10.3.8 /db/_compact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
10.3.9 /db/_compact/design-doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
10.3.10 /db/_ensure_full_commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
10.3.11 /db/_view_cleanup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
10.3.12 /db/_security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
10.3.13 /db/_purge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
10.3.14 /db/_missing_revs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
10.3.15 /db/_revs_diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
10.3.16 /db/_revs_limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
10.4 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
10.4.1 /db/doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
10.4.2 /db/doc/attachment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
10.5 DesignDocuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
10.5.1 /db/_design/design-doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
10.5.2 /db/_design/design-doc/attachment . . . . . . . . . . . . . . . . . . . . . 348
10.5.3 /db/_design/design-doc/_info . . . . . . . . . . . . . . . . . . . . . . . . . 348
v
10.5.4 /db/_design/design-doc/_view/view-name . . . . . . . . . . . . . . . . . 350
10.5.5 /db/_design/design-doc/_show/show-name . . . . . . . . . . . . . . . . . 364
10.5.6 /db/_design/design-doc/_show/show-name/doc-id . . . . . . . . . . . 364
10.5.7 /db/_design/design-doc/_list/list-name/view-name . . . . . . . . . 365
10.5.8 /db/_design/design-doc/_list/list-name/other-ddoc/view-name 366
10.5.9 /db/_design/design-doc/_update/update-name . . . . . . . . . . . . . . 367
10.5.10 /db/_design/design-doc/_update/update-name/doc-id . . . . . . . . 368
10.5.11 /db/_design/design-doc/_rewrite/path. . . . . . . . . . . . . . . . . . . 369
10.6 Local(non-replicating)Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
10.6.1 /db/_local/id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
11 ClusterReference 375
11.1 SetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
11.1.1 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
11.1.2 TheClusterSetupWizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
11.1.3 TheClusterSetupAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
11.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
11.3 NodeManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
11.3.1 Addinganode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
11.3.2 Removinganode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
11.4 DatabaseManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
11.4.1 Creatingadatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
11.4.2 Deletingadatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
11.4.3 Placingadatabaseonspecificnodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
11.5 Sharding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
11.5.1 Scalingout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
11.5.2 MovingShards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
11.5.3 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
11.5.4 Reshard? No,Preshard! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
12 JSONStructureReference 385
12.1 AllDatabaseDocuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
12.2 BulkDocumentResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
12.3 BulkDocuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
12.4 Changesinformationforadatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
12.5 CouchDBDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
12.6 CouchDBErrorStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
12.7 CouchDBdatabaseinformationobject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
12.8 DesignDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
12.9 DesignDocumentInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
12.10 DocumentwithAttachments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
12.11 ListofActiveTasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
12.12 ReplicationSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
12.13 ReplicationStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
12.14 Requestobject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
12.15 Request2object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
12.16 Responseobject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
12.17 ReturnedCouchDBDocumentwithDetailedRevisionInfo . . . . . . . . . . . . . . . . . . . . 391
12.18 ReturnedCouchDBDocumentwithRevisionInfo . . . . . . . . . . . . . . . . . . . . . . . . . 392
12.19 ReturnedDocumentwithAttachments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
12.20 SecurityObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
12.21 UserContextObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
12.22 ViewHeadInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
13 ExperimentalFeatures 395
13.1 NodeJSQueryServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
13.1.1 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
13.1.2 DifferencesfromtheSpiderMonkeyQueryServer . . . . . . . . . . . . . . . . . . . . . 396
13.2 Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
vi
13.3 Content-Security-Policy(CSP)HeaderSupportfor/_utils(Fauxton) . . . . . . . . . . . . . . . . 396
14 ContributingtothisDocumentation 397
14.1 StyleGuidelinesforthisDocumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Theguidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
15 ReleaseHistory 401
15.1 2.1.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
15.1.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
15.1.2 Version2.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
15.1.3 Version2.1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15.1.4 FixedIssues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
15.2 2.0.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
15.2.1 Version2.0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
15.2.2 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.3 KnownIssues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.4 BreakingChanges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.3 1.7.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
15.3.1 Version1.7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
15.3.2 Version1.7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
15.4 1.6.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
15.4.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
15.4.2 Version1.6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
15.5 1.5.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
15.5.1 Version1.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.5.2 Version1.5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.6 1.4.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.6.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.6.2 Version1.4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.7 1.3.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
15.7.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
15.7.2 Version1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
15.7.3 Version1.3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
15.8 1.2.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.8.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.8.2 Version1.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.8.3 Version1.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.8.4 Version1.2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.9 1.1.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
15.9.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
15.9.2 Version1.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
15.9.3 Version1.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
15.9.4 Version1.1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
15.10 1.0.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
15.10.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
15.10.2 Version1.0.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
15.10.3 Version1.0.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
15.10.4 Version1.0.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
15.10.5 Version1.0.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
15.10.6 Version1.0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
15.11 0.11.xBranch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
15.11.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
15.11.2 Version0.11.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
15.11.3 Version0.11.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
15.11.4 Version0.11.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
15.12 0.10.xBranch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
15.12.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
15.12.2 Version0.10.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
vii
15.12.3 Version0.10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
15.12.4 Version0.10.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
15.13 0.9.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
15.13.1 UpgradeNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
15.13.2 Version0.9.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
15.13.3 Version0.9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
15.13.4 Version0.9.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
15.14 0.8.xBranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
15.14.1 Version0.8.1-incubating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
15.14.2 Version0.8.0-incubating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
16 SecurityIssuesInformation 445
16.1 CVE-2010-0009: ApacheCouchDBTimingAttackVulnerability . . . . . . . . . . . . . . . . . 445
16.1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.1.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.1.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.1.4 Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.2 CVE-2010-2234: ApacheCouchDBCrossSiteRequestForgeryAttack . . . . . . . . . . . . . . 446
16.2.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.2.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.2.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.2.4 Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.3 CVE-2010-3854: ApacheCouchDBCrossSiteScriptingIssue. . . . . . . . . . . . . . . . . . . 446
16.3.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.3.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.3.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
16.3.4 Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
16.4 CVE-2012-5641: InformationdisclosureviaunescapedbackslashesinURLsonWindows . . . . 447
16.4.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
16.4.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
16.4.3 Work-Around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
16.4.4 Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
16.4.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
16.5 CVE-2012-5649: JSONParbitrarycodeexecutionwithAdobeFlash . . . . . . . . . . . . . . . 448
16.5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
16.5.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
16.5.3 Work-Around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
16.6 CVE-2012-5650: DOMbasedCross-SiteScriptingviaFutonUI . . . . . . . . . . . . . . . . . . 448
16.6.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
16.6.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
16.6.3 Work-Around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
16.6.4 Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
16.7 CVE-2014-2668: DoS(CPUandmemoryconsumption)viathecountparameterto/_uuids . . . 449
16.7.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
16.7.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.7.3 Work-Around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.8 CVE-2017-12635: ApacheCouchDBRemotePrivilegeEscalation . . . . . . . . . . . . . . . . 450
16.8.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.8.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.8.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.8.4 Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
16.9 CVE-2017-12636: ApacheCouchDBRemoteCodeExecution . . . . . . . . . . . . . . . . . . . 451
16.9.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
16.9.2 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
16.9.3 Credit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
17 ReportingNewSecurityProblemswithApacheCouchDB 453
viii
Description:document revision is generated. A few days later, we remember our new songs and want to copy the playlist across to our desktop computer. As illustrated in Figure 6. Synchronizing between two databases, the backup application copies the new document and the new revision to the desktop CouchDB