Introducing Outflux: a smart way out of InfluxDB
转自:https://blog.timescale.com/migrate-outflux-a-smart-way-out-of-influxdb/
Migrate your workload from InfluxDB to TimescaleDB with just a single command
Users are often asking us how to migrate off of InfluxDB because they want the reliability and flexibility of TimescaleDB. To make it easier for them, we are introducing a new migration tool called Outflux.
Designed to help users seamlessly migrate from InfluxDB to TimescaleDB, Outflux is built in a modular fashion, enabling users to either migrate schema or data or both directly into TimescaleDB. It’s easy to use, configurable, and most importantly, it’s fast.
In this post, we will first cover the motivations behind creating Outflux, then dive deeper into how we built it, how it works, and how to get started.
[Or jump straight to the tutorial.]
Why we created Outflux
We give props to InfluxData for being an early entry in the time-series database market, but as with any technology, one-size does not fit all. Aside from receiving feedback from our users, we also saw a visible market gap between the services InfluxDB provides, and what users actually need (which led to the birth of TimescaleDB).
Early on we recognized that working with IoT data was a whole new ballgame than the DevOps workloads InfluxDB is designed for. The ability to combine your time-series data with your relational data (and often, geo-spatial data) is becoming increasingly important for organizations. TimescaleDB is optimized for these types of workloads and gives organizations the option to scale from the cloud to the edge.
We’d also be remiss not to touch on the fact that TimescaleDB is built on the SQL open-standard. This allows organizations to unify under a single query language that is well known among developers across the globe. InfluxData initially decided to create their own SQL-like query language called InfluxQL, but that had quirks and gotchas that tripped up developers. Then they created a new language, Flux, to solve the issues associated with InfluxQL. Now their users are faced with learning a whole new language which creates a split ecosystem and even more confusion. Not ideal. (More on SQL vs. Flux here.)
We’ve benchmarked TimescaleDB against InfluxDB and encourage you to review the results. You might just find that InfluxDB is satisfactory for your needs, or you might decide that it’s time for an upgrade and switch to TimescaleDB.
How we built Outflux & how it works
After some careful evaluation and research, we discovered that several API clients exist for InfluxDB for a variety of programming languages including Python and Go. The Go client is maintained by InfluxData themselves, and using this API client allowed us to tailor the tool to our needs.
We found that we could control:
- The amount of data being selected from the InfluxDB server
- Which data (configurably) is exported
- The input format for TimescaleDB (and additional transformations before inserting)
- The concurrency level
From here, we built outflux as a series of libraries connected in one CLI that selects data from InfluxDB using their HTTP API, discovers and transforms the data schema, and imports it into TimescaleDB concurrently.
Underneath the covers, Outflux implements an Extraction Pipeline that has three stages:
- Extractor: where Outflux queries the input database (InfluxDB) by selecting data specified by the user and converting it into an intermediate format
- Transformation Chain: where configurable changes can be made to the data (i.e. castings, filters, column generation) while preserving the intermediate format
- Injector: where the specific code for the receiving database resides (Outflux knows how to transform the intermediate/neutral format and insert it)
Each of the components work independently of each other in a separate coroutine/thread. Multiple pipelines can be used to export each measurement in a concurrent fashion. The Extraction Pipelines are spawned, joined and managed by the main Outflux component. The figure below illustrates the data flow once the Extraction Pipeline is in place.
Getting started
Now that you know more about Outflux’s internal framework, you are ready to get started! Outflux is an open-source tool and the code is available on GitHub in a public repository.
Using the tool is easy and involves just a simple command: `migrate`. Outflux manages the schema discovery, validation, and creation. It also handles exporting and importing data from an input database to an output database.
Before you begin setting up Outflux you need to ensure you have 1) a running instance of InfluxDB at a known location and a means to connect to it and 2) TimescaleDB installed and a means to connect to it.
If all the pre-requirements are met, you can begin installing Outflux by...
- Visiting the releases section of the repository
- Downloading the latest compressed tarball for your platform
- Extracting it to a preferred location
If you navigate to where you extracted the archive and execute:
$ ./outflux --help
Outflux offers the capabilities to migrate an InfluxDB database, or specific measurements to TimescaleDB. It can also allow a user to transfer only the schema of a database or measurement to TimescaleDB
Usage:
outflux [command]
Available Commands:
help Help about any command
migrate Migrate the schema and data from InfluxDB measurements into TimescaleDB hypertables
schema-transfer Discover the schema of measurements and validate or prepare a TimescaleDB hyper-table with the discovered schema
You will see the help output for Outflux, a brief explanation of what it can do, the usage, and available commands.
For instructions on how to set up Outflux from source, you can visit the README. For step-by-step instructions on how to get started, please read our tutorial.
Note: Outflux currently only supports bulk migrations. Live, continuous migrations from InfluxDB will be supported with other upcoming solutions.
Next steps
Are you ready to migrate off of InfluxDB and upgrade to TimescaleDB? Yes? We thought so! As mentioned above, you can follow the tutorial for in-depth instructions. Be sure to check out the Outflux page for more information and ways to contact us.
If you are new to TimescaleDB, follow these installation instructions. (Note: If you are just getting started, we encourage you to check out our features matrix to see which version of TimescaleDB is best for you.)
FAQs
How much does Outflux cost?
Outflux is free to use! TimescaleDB is also free to use, but if you are looking to upgrade to TimescaleDB Enterprise, we offer different pricing options based on your needs.
Can you tell me more about the differences between TimescaleDB vs InfluxDB?
Of course! We’ve benchmarked TimescaleDB vs InfluxDB and you can read the results on our whitepaper.
What is the difference between SQL and Flux?
We are glad you asked! Read this post to learn all about the two query languages.
Does Outflux do migrations in a live fashion?
No, Outflux currently only supports bulk migrations, so active inserts into InfluxDB after Outflux is used will not migrate over. Continuous migrations from InfluxDB will be supported with other upcoming solutions.
Introducing Outflux: a smart way out of InfluxDB的更多相关文章
- 使用outflux 导入influxdb 的数据到timescaledb
influxdb 以及timescaledb 都是不错的时序数据库,timescaledb 团队提供了直接从influxdb 导入 环境准备 docker-compose 文件 version: &q ...
- Introducing Makisu: Uber’s Fast, Reliable Docker Image Builder for Apache Mesos and Kubernetes
转自:https://eng.uber.com/makisu/?amp To ensure the stable, scalable growth of our diverse tech stack, ...
- Smart/400开发上手1:入门
1.介绍 Smart/400是在AS/400之上的开发平台,管理开发.运维的全生命周期. 2.设计基础 Introducing Fields Smart通过字段字典Field Dictionary来存 ...
- Method and apparatus for establishing IEEE 1588 clock synchronization across a network element comprising first and second cooperating smart interface converters wrapping the network element
Apparatus for making legacy network elements transparent to IEEE 1588 Precision Time Protocol operat ...
- Building Applications with Force.com and VisualForce (DEV401)(五):Application Essential: Introducing Business Logic
Dev 401-005 Application Essential: Introducing Business Logic Module Agenda1.Custom object Queues2.W ...
- Smart Tag——DevExpress WPF初探
Smart Tag是一个设计时扩展,所有标准控件均自带这个功能,当然也包括 DevExpress WPF Controls .可以快速设置控件的值或者绑定最重要的属性.它还可以帮助你完成一些重复的工作 ...
- 【容器云】十分钟快速构建 Influxdb+cadvisor+grafana 监控
本文作者:七牛云布道师@陈爱珍,DBAPlus社群联合发起人.前新炬技术专家.多年企业级系统的应用运维及分布式系统实战经验.现专注于容器.微服务及DevOps落地的研究与实践. 安装过程 三个都直接下 ...
- International Conference for Smart Health 2015 Call for Papers
Advancing Informatics for healthcare and healthcare applications has become an international researc ...
- Call for Papers International Conference for Smart Health (ICSH) 2014
Call for PapersInternational Conference for Smart Health (ICSH) 2014 Beijing, China July 10-11, 2014 ...
随机推荐
- 第十三次作业——回归模型与房价预测&第十一次作业——sklearn中朴素贝叶斯模型及其应用&第七次作业——numpy统计分布显示
第十三次作业——回归模型与房价预测 1. 导入boston房价数据集 2. 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示. 3. 多元线性回归模型,建立13个变量与房价之间的预测模 ...
- SQL优化清单
SQL优化清单 1.from 语句中包含多个表的情况下,把记录数少的表放在前面 2.where 语句中包含多个条件时,将刷选多的条件放前面 3.避免使用select * ,因为这样会去查询所有列的数据 ...
- 原生js实现淘宝图片切换
这个淘宝图片切换具体效果就是:鼠标移上底部一行中的小图片,上面大图片区域就会显示对应的图片. gif图片看起来还挺酷的,其实实现很简单,用原生js绑定事件改变大图片区域的src. 上代码,html部分 ...
- Windows 10 远程桌面出现身份验证错误:要求的函数不受支持(解决)
爬梯子还是快一些,百度搜一年也搜不到~~~囧 给出原始地址,百度的某些解决方案不知道是不是截取过来搞错了还是啥,返回和原始方案就差一丢丢,浪费时间. https://windowsreport.com ...
- 断网环境,Python环境迁移
Python刚装好断网了怎么办? wget不管用怎么办? 想把现有的Python环境转移到另外一台机器上怎么办? 这就用到了离线安装 1.创建目录用于存放下载的包,并进入该目录 mkdir lihai ...
- npm run dev 报错 run `npm audit fix` to fix them, or `npm audit` for details
前几天写的直接运行npm run dev还是ok的,突然不行了,前面报错是css-loader没有,删除style标签上的lang='scss'就好了,先不需要这个依赖.这个先不管. 只是后面的 ru ...
- java知识点总结----java入门(1)
1.首先的明白什么是java? 1.java是一门编程语言 2.java是开发环境 3.java是运行环境 2.java概况--java构架 1.J2SE (Java2 Standard Editio ...
- [转载] java多线程总结(一)
转载自:http://www.cnblogs.com/lwbqqyumidi/p/3804883.html 作者:Windstep 多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的. ...
- dos脚本1章
第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在键盘上按下Ctr ...
- sdn交换机和普通交换机区别
SDN交换机基本具有普通交换机的所有功能.SDN交换机特别的功能在于支持OpenFlow协议(有些只支持OpenFlow1.0,有些强点支持1.0和1.3).不过你要连接交换机再手动将所需的端口改成支 ...
