databricks / docker-dev

Arcion Demo Kit for testing database to database replication
https://arcionlabs.github.io/docker-dev/
GNU General Public License v3.0
3 stars 0 forks source link
cdc database demo real-time replication snapshot testing

More info at Arcion Demo Kit docs.

Overview

This is the Arcion Demo Kit. It is designed to demo and test Arcion replication from various data sources to targets. The diagram below describes the components of the demo kit. Please refer to https://docs.arcion.io for more info.

graph LR
    L[Load Generator<br>TPC-C<br>YCSB] --> S
    subgraph Arcion Cluster
        A1
        M[(Meta <br>Data)]
    end
    S[(Source <br>Data)] --> A1[Arcion <br> UI]
    A1 --> T[(Destination<br>Data)]

Getting started

Assumptions:

Install and Setup

OSX (Mac) prerequisites

brew install dialog 
brew install jq 
brew install git
brew install wget
brew install bash
brew install podman 
brew install podman-desktop
pip3 install podman-compose

Install Arcion Demo Kit

Cut and paste the following in a terminal.

git clone https://github.com/arcionlabs/docker-dev
cat >>~/.profile <<EOF
export ARCION_LICENSE="$(cat replicant.lic | base64)"
export DOCKERDEV_BASEDIR="$(pwd)/docker-dev"
EOF
source ~/.profile
docker-dev/install.sh

Podman example asciicast

Docker exmaple asciicast

Demo Recordings

Arcion supports snapshot, real-time, snapshot, and delta-snapshot replication modes. Recorded Arcion CLI demos of source, destination, and replication type combination is available. The recordings use asciinema so that the YAML config files can be cut/pasted. This is a functional demo using TPCC and YCSB. The data size is 1GB each, 1 thread given to Arcion, and 8 GB of RAM shared.

Snapshot Replication CLI Demos

snapshot kafka minio mysql null oracle pg redis stream snowflake
db2 luw TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB
informix TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB
mysql TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB
oracle TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB
pg TPCC, YCSB TPCC, YCSB TPCC, YCSB TPCC, YCSB   TPCC, YCSB   TPCC, YCSB

Full Replication CLI Demos

full databricks Google Cloud Storage Google CloudSQL MySQL kafka minio mongodb mysql null oracle pg redis stream singlestore snowflake sqlserver
db2 luw             TPCC YCSB   TPCC YCSB TPCC YCSB        
IBM Db2                 various          
informix       YCSB YCSB   YCSB YCSB YCSB,YCSB YCSB,YCSB YCSB   YCSB  
mongodb                          
mysql various TPCC YCSB TPCC YCSB TPCC YCSB TPCC YCSB   TPCC YCSB,TPCC & YCSB,TPCC & YCSB TPCC YCSB TPCC YCSB TPCC YCSB TPCC YCSB various  
oracle     TPCC YCSB,TPCC YCSB TPCC YCSB various, TPCC YCSB TPCC YCSB various TPCC YCSB   various YCSB,  
pg       YCSB YCSB   YCSB   X YCSB YCSB     YCSB
snowflake                           various

Using Demo Kit

CLI

The demo kit uses tmux. Based on your preference, use one or both methods below. Both views will be in sync.

UI

Go to http://localhost:8080 and sign in with user admin password arcion

Running a demo with CLI

each will run for 5 minutes and times out by default

arcdemo.sh full mysql kafka
arcdemo.sh full mysql minio
arcdemo.sh full mysql pg

Change Scale Factor Performance and Scale Tests

To shutdown all data source and destination providers

for db in $( find * -maxdepth 2 -name docker-compose.yaml ); do
pushd $(dirname $db) 2>/dev/null; docker compose stop; popd 2>/dev/null
done
for db in $( find * -maxdepth 2 -name docker-compose.yaml ); do
pushd $(dirname $db); docker compose up -d; popd
done

Cloud Database Examples

Snowflake

single thread each extractor and applier source catalog is SNOWFLAKE_SAMPLE_DATA and source schema is TPCH_SF1

SRCDB_DB=SNOWFLAKE_SAMPLE_DATA SRCDB_SCHEMA=TPCH_SF1 arcdemo.sh snapshot snowflake mysql

two threads each extractor and applier source catalog is default arcsrc and source schema is PUBLIC

arcdemo.sh -b 2:2 snpashot snowflake mysql

Oracle Docker Setup

Oracle requires container images to be built locally. Start with Oracle XE, then use Oracle EE for volume testing. Oracle XE does not require the extra step of downloading the Oracle EE binary. Oracle EE should be used for anything scale factor beyond 10.

Oracle XE

Testing with different tags of demokit

export ARCION_WORKLOADS_TAG=23.07
/bin/bash -c "$(curl -k -fsSL https://raw.githubusercontent.com/arcionlabs/docker-dev/${ARCION_WORKLOADS_TAG:-HEAD}/install.sh)"
export ARCION_DOCKER_DBS=(db2 informix)
/bin/bash -c "$(curl -k -fsSL https://raw.githubusercontent.com/arcionlabs/docker-dev/${ARCION_WORKLOADS_TAG:-HEAD}/install.sh)"

Generate Source / Target Matric

cd bin
./startall.sh
./recdemo.sh