Zum Inhalt

Apache CouchDB Cheatsheet

Apache CouchDB - Dokumentendatenbank

Apache Couch DB ist eine Open-Source-Dokument-orientierte NoSQL-Datenbank, die JSON für Dokumente, HTTP für API und JavaScript für MapReduce Abfragen verwendet. Es bietet ACID-Semantik und eventuelle Konsistenz über Multiversion Koncurrency Control. < p>

generieren

Inhaltsverzeichnis

  • [Installation](LINK_1 -%20(_LINK_1)
  • [Datenbankverwaltung](LINK_1 -%20[Dokumente%20Operationen](LINK_1 -%20Ansichten%20und%20Abfragen
  • [Mango Queries](_LINK_1 -%20[Replikation](_LINK_1 -%20[Sicherheit](LINK_1___ -%20(__LINK_1)
  • (__LINK_1___)
  • (Monitoring)(_LINK_1__)
  • Beste Praktiken

Installation

Ubuntu/Debian Installation

# Add CouchDB repository
curl -L https://couchdb.apache.org/repo/keys.asc | sudo apt-key add -
echo "deb https://apache.jfrog.io/artifactory/couchdb-deb/ focal main" | sudo tee /etc/apt/sources.list.d/couchdb.list

# Update package index
sudo apt update

# Install CouchDB
sudo apt install couchdb

# Configure CouchDB during installation
# Choose standalone or clustered mode
# Set admin password

# Start CouchDB service
sudo systemctl start couchdb
sudo systemctl enable couchdb

# Check status
sudo systemctl status couchdb

# Verify installation
curl http://127.0.0.1:5984/
```_

### CentOS/RHEL Installation
```bash
# Add EPEL repository
sudo yum install epel-release

# Add CouchDB repository
sudo tee /etc/yum.repos.d/couchdb.repo << EOF
[couchdb]
name=CouchDB
baseurl=https://apache.jfrog.io/artifactory/couchdb-rpm/el7/\$basearch/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://couchdb.apache.org/repo/keys.asc
EOF

# Install CouchDB
sudo yum install couchdb

# Start CouchDB service
sudo systemctl start couchdb
sudo systemctl enable couchdb

# Check status
curl http://127.0.0.1:5984/
```_

### Docker Installation
```bash
# Pull CouchDB image
docker pull couchdb:latest

# Run CouchDB container
docker run -d \
  --name couchdb \
  -p 5984:5984 \
  -e COUCHDB_USER=admin \
  -e COUCHDB_PASSWORD=password \
  -v couchdb-data:/opt/couchdb/data \
  couchdb:latest

# Check CouchDB
curl http://admin:password@localhost:5984/

# Docker Compose setup
cat > docker-compose.yml << EOF
version: '3.8'
services:
  couchdb:
    image: couchdb:latest
    container_name: couchdb
    ports:
      - "5984:5984"
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=password
    volumes:
      - couchdb-data:/opt/couchdb/data
      - couchdb-config:/opt/couchdb/etc/local.d
    restart: unless-stopped

volumes:
  couchdb-data:
  couchdb-config:
EOF

docker-compose up -d
```_

### Manuelle Installation
```bash
# Download CouchDB
wget https://downloads.apache.org/couchdb/source/3.3.3/apache-couchdb-3.3.3.tar.gz

# Extract
tar -xzf apache-couchdb-3.3.3.tar.gz
cd apache-couchdb-3.3.3

# Install dependencies (Ubuntu/Debian)
sudo apt install build-essential pkg-config erlang \
  libicu-dev libmozjs-78-dev libcurl4-openssl-dev

# Configure and compile
./configure
make release

# Install
sudo cp -r rel/couchdb /opt/
sudo useradd -d /opt/couchdb couchdb
sudo chown -R couchdb:couchdb /opt/couchdb

# Create systemd service
sudo tee /etc/systemd/system/couchdb.service << EOF
[Unit]
Description=Apache CouchDB
After=network.target

[Service]
Type=simple
User=couchdb
ExecStart=/opt/couchdb/bin/couchdb
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl start couchdb
sudo systemctl enable couchdb
```_

## Grundgeschäfte

### HTTP API Basics
```bash
# Check CouchDB status
curl http://localhost:5984/

# Get server information
curl http://localhost:5984/_up

# Get all databases
curl http://localhost:5984/_all_dbs

# Get server stats
curl http://localhost:5984/_stats

# Get active tasks
curl http://localhost:5984/_active_tasks

# Get cluster membership
curl http://localhost:5984/_membership

# Get node information
curl http://localhost:5984/_node/_local/_stats

# Authentication
curl -u admin:password http://localhost:5984/

# Using session authentication
curl -X POST http://localhost:5984/_session \
  -H "Content-Type: application/json" \
  -d '{"name": "admin", "password": "password"}'

# Get current user
curl http://localhost:5984/_session
```_

### Konfiguration
```bash
# Get configuration
curl http://admin:password@localhost:5984/_node/_local/_config

# Get specific configuration section
curl http://admin:password@localhost:5984/_node/_local/_config/httpd

# Set configuration value
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/httpd/bind_address \
  -d '"0.0.0.0"'

# Delete configuration value
curl -X DELETE http://admin:password@localhost:5984/_node/_local/_config/httpd/bind_address

# Restart CouchDB
curl -X POST http://admin:password@localhost:5984/_node/_local/_restart

# Common configuration locations
# /opt/couchdb/etc/local.ini
# /opt/couchdb/etc/local.d/

# Example local.ini configuration
cat > /opt/couchdb/etc/local.d/custom.ini << EOF
[httpd]
bind_address = 0.0.0.0
port = 5984

[ssl]
enable = true
cert_file = /path/to/cert.pem
key_file = /path/to/key.pem

[log]
level = info

[couchdb]
max_dbs_open = 500
EOF
```_

## Datenbankverwaltung

### Datenbanken erstellen und verwalten
```bash
# Create database
curl -X PUT http://admin:password@localhost:5984/mydb

# Check if database exists
curl -I http://admin:password@localhost:5984/mydb

# Get database information
curl http://admin:password@localhost:5984/mydb

# Get database stats
curl http://admin:password@localhost:5984/mydb/_stats

# List all databases
curl http://admin:password@localhost:5984/_all_dbs

# Delete database
curl -X DELETE http://admin:password@localhost:5984/mydb

# Compact database
curl -X POST http://admin:password@localhost:5984/mydb/_compact

# Get database security
curl http://admin:password@localhost:5984/mydb/_security

# Set database security
curl -X PUT http://admin:password@localhost:5984/mydb/_security \
  -H "Content-Type: application/json" \
  -d '{
    "admins": {
      "names": ["admin"],
      "roles": ["admin"]
    },
    "members": {
      "names": ["user1"],
      "roles": ["user"]
    }
  }'

# Get database changes
curl http://admin:password@localhost:5984/mydb/_changes

# Get changes with filter
curl http://admin:password@localhost:5984/mydb/_changes?include_docs=true&limit;=10

# Continuous changes feed
curl http://admin:password@localhost:5984/mydb/_changes?feed=continuous
```_

### Datenbank Information
```bash
# Detaillierte Datenbank-Info
Curl http://admin:password@localhost:5984/mydb

# Beispielantwort:
{\cHFFFF}
"db_name": "mydb",
NACHRICHTEN