Timescale Cloud:性能、规模、企业级
自托管产品
MST
CSV 是一种广泛用于数据迁移的文件格式。
本页向您展示如何将数据从 CSV 文件导入到您的 Timescale Cloud 服务。
最佳实践是使用与您的 Timescale Cloud 服务位于同一区域的 Ubuntu EC2 实例 作为迁移机器。即,您运行命令以将数据从源数据库移动到目标 Timescale Cloud 服务的机器。
在迁移数据之前
创建一个目标 Timescale Cloud 服务。
每个 Timescale Cloud 服务都有一个支持 最流行扩展 的数据库。Timescale Cloud 服务不支持表空间,并且服务没有超级用户。最佳实践是创建至少具有 8 个 CPU 的 Timescale Cloud 服务,以获得更流畅的体验。更高规格的实例可以显著缩短整个迁移窗口。
为确保在此过程中不运行维护,请调整维护窗口。
安装 Go
v1.13 或更高版本。
timescaledb-parallel-copy
通过并行化导入过程提高了大型数据集的性能。它还保留了行顺序并使用轮询方法来优化内存管理和磁盘操作。
要验证您的安装,请运行
timescaledb-parallel-copy --version
。确保 CSV 文件中的时间列使用
TIMESTAMPZ
数据类型。
为了更快的数据传输,最佳实践是您的目标服务和运行数据导入的系统位于同一区域。
从 CSV 文件导入数据
设置您的服务连接字符串
此变量保存目标 Timescale Cloud 服务的连接信息。
在源机器的终端中,进行以下设置
export TARGET=postgres://tsdbadmin:<PASSWORD>@<HOST>:<PORT>/tsdb?sslmode=require您可以在创建服务时下载的配置文件中找到 Timescale Cloud 服务的连接信息。
创建一个 超表 来保存您的数据
创建一个与 parquet 文件中数据兼容的新空表,并带有相应模式。
例如,如果您的 parquet 文件包含列
ts
、location
和temperature
,其类型分别为TIMESTAMP
、STRING
和DOUBLE
psql $TARGET -c "CREATE TABLE <TABLE_NAME> ( \ts TIMESTAMPTZ NOT NULL, \location TEXT NOT NULL, \temperature DOUBLE PRECISION NULL \);"如果您更喜欢使用安全的 UI 而不是命令行,请使用 Timescale Console 中的数据模式。
将空表转换为超表
在以下命令中,将
<TABLE NAME>
替换为您刚刚创建的表的名称,并将<COLUMN_NAME>
替换为<TABLE NAME>
中的分区列。psql $TARGET -c "SELECT create_hypertable('<TABLE_NAME>', by_range('<COLUMN_NAME>'))"
导入您的数据
在包含 CSV 文件的文件夹中,可以
为获得最佳性能同时避免资源竞争,请将
<NUM_WORKERS>
设置为服务中 CPU 数量的两倍,但要小于可用的 CPU 核心数。timescaledb-parallel-copy \--connection $TARGET \--table <TABLE_NAME> \--file <FILE_NAME>.csv \--workers <NUM_WORKERS> \--reporting-period 30s对于自托管 TimescaleDB,将
$TARGET
设置为host=localhost user=postgres sslmode=disable
使用 psql
psql COPY 是单线程的,对于大型数据集可能会较慢。
psql $TARGET\c <DATABASE_NAME>\COPY <TABLE_NAME> FROM <FILENAME>.csv CSV"
验证数据是否已正确导入到您的服务中
就是这样,您已从 CSV 文件导入了数据。
关键词