Compose helps with database transformations from one store to another. It can also sync from one to another or several stores.
make sure godep is installed, go get github.com/tools/godep
and then build with
godep restore
godep go build -a ./cmd/...
There is a sample config in test/config.yaml. The config defines the endpoints, (either sources or sinks) that are available to the application.
api:
interval: 60s # time interval between metrics posts to the api endpoint
uri: "http://requestb.in/1a0zlf11"
nodes:
localmongo:
type: mongo
uri: mongodb://localhost/boom
supernick:
type: elasticsearch
uri: http://10.0.0.1,10.0.0.2:9200/indexname
debug:
type: file
uri: stdout://
foofile:
type: file
uri: file:///tmp/foo
stdout:
type: file
uri: stdout://
There is also a sample 'application.js' in test/application.js. The application is responsible for building transporter pipelines. Given the above config, this Transporter application.js will copy from a file (in /tmp/foo) to stdout.
Source({name:"foofile"}).save({name:"stdout"})
This application.js will copy from the local mongo to a file on the local disk
Source({name:"localmongo", namespace: "boom.foo"}).save({name:"tofile"})
Transformers can also be configured in the application.js as follows
var pipeline = Source({name:"mongodb-production", namespace: "compose.milestones2"})
pipeline = pipeline.transform("transformers/transform1.js").transform("transformers/transform2.js")
pipeline.save({name:"supernick", namespace: "something/posts2"});
- list
transporter list --config ./test/config.yaml
- run
transporter run --config ./test/config.yaml ./test/application.js
- eval
transporter eval --config ./test/config.yaml 'Source({name:"localmongo", namespace: "boom.foo"}).save({name:"tofile"})'
- test
transporter test --config ./test/config.yaml test/application.js
- ensure you have mercurial installed as it is required for a dependency
- using the homebrew package manager
brew install hg
Homebrew Guide/Install
- using the homebrew package manager
- install the Mac OS X binary build from https://golang.org/dl/
- follow instructions on http://golang.org/doc/install
- VERY IMPORANT: Go has a required directory structure which the GOPATH needs to point to. Instructions can be found on http://golang.org/doc/code.html or by typing
go help gopath
in terminal. - setup the directory structure in $GOPATH
cd $GOPATH; mkdir src pkg bin
- create the github.com path and compose
mkdir -p src/github.com/compose; cd src/github.com/compose
- clone transporter
git clone https://github.com/compose/transporter; cd transporter
- run go get to get all the dependencies
go get -a ./cmd/...
- now you can build
go build -a ./cmd/...
At this point you should be able to run transporter via $GOPATH/bin/transporter
, you may need to add $GOPATH to your PATH environment variable. Something along the lines of export PATH="$GOPATH/bin:$PATH"
should work.
- ensure vagrant is installed
- ensure ansible is installed
- ensure either virtual box or VMWare fusion or VMWare Workstation is installed
> cd transporter
> vagrant up
...
> vagrant ssh
...
vagrant> ./run-test
See READMEWINDOWS.md
Want to help out with Transporter? Great! There are instructions to get you started here.
Want to talk about Transporter? Join us in #compose on irc.freenode.net!
Transporter is licensed under the New BSD License. See LICENSE for full license text.