组件分享之后端组件——ETL组件包transporter
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
组件基本信息
- 组件:transporter
- 开源协议:BSD-3-Clause license
内容
本节我们分享一个ETL组件包transporter,此版本官方仅支持 mongodb 和 postgresql 适配器。稍后将添加对其他数据库的支持。其他适配器可能工作也可能不工作。鼓励您仍然使用 v0.5.2 进行非 mongo/postgres 迁移。
Transporter 允许用户将许多数据适配器配置为源或接收器。这些可以是数据库、文件或其他资源。从源读取数据,转换为消息格式,然后向下发送到接收器,在接收器中将消息转换为其目的地的可写格式。用户还可以在 JavaScript 中创建数据转换,这些转换可以位于源和接收器之间并操纵或过滤消息流。 适配器可能能够跟踪源数据中发生的更改。这种“尾部”功能允许运输机保持运行并保持接收器同步。
最新的二进制版本可从Github 存储库获得
- elasticsearch
- file
- mongodb
- postgresql
- rabbitmq
- rethinkdb
- mysql
使用格式如下:
代码语言:javascript复制transporter init [source adaptor name] [sink adaptor name]
具体使用案例如下:
代码语言:javascript复制$ transporter init mongodb elasticsearch
$ cat pipeline.js
var source = mongodb({
"uri": "${MONGODB_URI}"
// "timeout": "30s",
// "tail": false,
// "ssl": false,
// "cacerts": ["/path/to/cert.pem"],
// "wc": 1,
// "fsync": false,
// "bulk": false,
// "collection_filters": "{}",
// "read_preference": "Primary"
})
var sink = elasticsearch({
"uri": "${ELASTICSEARCH_URI}"
// "timeout": "10s", // defaults to 30s
// "aws_access_key": "ABCDEF", // used for signing requests to AWS Elasticsearch service
// "aws_access_secret": "ABCDEF" // used for signing requests to AWS Elasticsearch service
})
t.Source(source).Save(sink)
// t.Source("source", source).Save("sink", sink)
// t.Source("source", source, "namespace").Save("sink", sink, "namespace")
$
每个适配器都有自己的 README 页面,其中包含有关配置和功能的详细信息
更多使用方式可以参见该README
本文声明:
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。