Orchestrator
Wirekite has a main binary called the orchestrator. The actual binary is called wirekite. This is a top level binary which calls all the other binaries to execute the task of data movement. Note that other binaries can be called independently also for testing purposes.Orchestrator Configuration File
Orchestrator takes a configuration file to understand what needs to be done. The configuration file has the following rules.- The configuration variables can be represented using the format
variable=value. - Empty lines are allowed.
- Comments are allowed. To comment just start the line with #.
- Multilevel variables are allowed using the format
parent.child=value.
Variables
The confguration file has the following variables and allowed values to determine what needs to be done.source is the database type from which we are extracting. The possible values are
- mysql
- oracle
- postgres
- sqlserver
target is the database type to which we are loading. The possible values are
- snowflake
- firebolt
mode defines what exactly are you moving from the source to the target. The possible values are
- schema
- data
- change
Source Child Variables
Bothsource and target variables can have child variables. The child variables are always represented as source.variable=value. The child variables can vary depending upon what is the source.
For example if the source=mysql then the child variables can be any of the variables listed in mysql variables but if the source is oracle then the variables need to be oracle variables.
Target Child Variables
Just like source can have child variables target can also have child variables. And similarly the target child variables depends upon the target. For example if the target=snowflake then the child variables can be any of the variables listed in snowflake variables. However target child variables have a slightly more expanded syntax. Target usually has two components — a loader and a mover. A loader essentially loads the files on to the target database while a mover actually moves the files from source to the target. Both loader and mover can take configuration variables specific to them. To distinguish between the variables for loader and mover the syntax that we use istarget.loader.variable=value and target.mover.variable=value.
For example the if the target= firebolt you can see both loader and mover variables in firebolt variables.
