TimescaleDBは、PostgreSQLを利用した無料のオープンソースの強力なデータベースシステムです。これはPostgreSQLの拡張であり、PostgreSQLで時系列データを分析するために特別に設計されています。 TimescaleDBはPostgreSQLと非常に似ていますが、速度とスケールが最適化されています。一般に、リレーショナルデータベースは主にデータの保存に使用され、大量の時系列データを処理することはできません。これはTimescaleDBが優れているところです。 NoSQLデータベースの速度とリレーショナルデータベースの使いやすさを兼ね備えています。
このチュートリアルでは、Ubuntu20.04にTimescaleDBをインストールして使用する方法を説明します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の新しいUbuntu20.04VPS
- サーバーで構成されているrootパスワード
ステップ1–Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。少なくとも1GBのRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–PostgreSQLデータベースをインストールする
まず、サーバーにPostgreSQLサーバーをインストールする必要があります。デフォルトでは、Ubuntu標準リポジトリで利用できます。次のコマンドを使用して簡単にインストールできます:
apt-get install postgresql postgresql-contrib -y
インストールが完了したら、PostgreSQLにログインし、postgresパスワードを設定します。
su - postgres psql -c "alter user postgres with password 'password'"
次に、次のコマンドを使用してPostgreSQLシェルを終了します。
exit
ステップ3–TimescaleDBをインストールする
まず、次のコマンドを使用して、必要なすべての依存関係をインストールします。
apt-get install gnupg2 software-properties-common curl git unzip -y
すべての依存関係がインストールされたら、次のコマンドを使用してTimescaleDBリポジトリを追加します。
add-apt-repository ppa:timescale/timescaledb-ppa -y
次に、次のコマンドを実行してTimescaleDBをインストールします。
apt-get install timescaledb-postgresql-12 -y
TimescaleDBをインストールしたら、いくつかの必要な構成を調整することをお勧めします。次のコマンドで実行できます:
timescaledb-tune --quiet --yes
次の出力が得られるはずです:
次に、PostgreSQLサービスを再起動して、構成の変更を適用します。
systemctl restart postgresql
ステップ4–新しいデータベースを作成してTimescaleDBを有効にする
このセクションでは、新しいデータベースを作成し、TimescaleDBを有効にして、データベースをデータベースに接続します。
まず、PostgreSQLシェルにログインし、次のコマンドを使用してtestdbという名前の新しいデータベースを作成します。
su - postgres psql CREATE DATABASE testdb;
次に、データベースをtestdbに変更し、次のコマンドを使用してTimescaleDBに接続します。
\c testdb CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
次の出力が得られるはずです:
時系列データは、多くの個別のテーブルで構成されるハイパーテーブルです。通常のSQLテーブルを作成し、関数create_hypertableを使用してハイパーテーブルに変換します。
まず、温度と湿度の情報を保存するテーブルを作成します。
CREATE TABLE conditions ( time TIMESTAMP WITH TIME ZONE NOT NULL, device_id TEXT, temperature NUMERIC, humidity NUMERIC );
次に、次のコマンドを使用して、テーブルをハイパーテーブルに変換します。
SELECT create_hypertable('conditions', 'time');
次に、次のコマンドを使用して、ハイパーテーブルにデータを挿入します。
INSERT INTO conditions(time, device_id, temperature, humidity) VALUES (NOW(), 'weather-pro-000000', 84.1, 84.1);
次に、次のコマンドを使用して複数行のデータを挿入します。
INSERT INTO conditions VALUES (NOW(), 'weather-pro-000002', 71.0, 51.0), (NOW(), 'weather-pro-000003', 70.5, 50.5), (NOW(), 'weather-pro-000004', 70.0, 50.2);
これで、次のコマンドを使用して、挿入されたデータを確認できます。
INSERT INTO conditions VALUES (NOW(), 'weather-pro-000002', 70.1, 50.1) RETURNING *;
次の出力が得られるはずです:
time | device_id | temperature | humidity -------------------------------+--------------------+-------------+---------- 2020-12-03 15:48:24.329461+00 | weather-pro-000002 | 70.1 | 50.1 (1 row) INSERT 0 1
次のコマンドを使用して、ハイパーテーブルからデータを削除することもできます。
DELETE FROM conditions WHERE temperature > 80;
データが削除されたら、VACUUMコマンドを実行して、削除されたデータによってまだ使用されているスペースを再利用できます。
VACUUM conditions;
結論
おめでとう!これで、Ubuntu20.04にTimescaleDBが正常にインストールおよび構成されました。これで、TimescaleDBを使用して時系列データを格納し、それらのデータを使用してグラフを作成できます。 Atlantic.NetからVPSホスティングでTimescaleDBを始めましょう!