はじめに
2024 年 8 月 7 日に、HeatWave Always Free DB システムが Oracle Cloud Infrastructure(OCI) で使用できるようになりました。
これによって、制限付きではありますが、無償で HeatWave の各機能を利用できます。
今回は、Always Free の HeatWave でどの機能が利用できるのか、また使用時の制限事項などについて検証してみたいと思います。
Always Free とは
そもそも Always Free とは、Oracle Cloud Free Tier の一部として提供されているサービスです。
Oracle Cloud Free Tier では 30 日間(300 米ドル)の無料トライアルが提供されますが、 Always Free が提供されているリソースについては、期間を過ぎても無償で使用し続けることが可能です。
すべてのOracle Cloud Infrastructureアカウント(無料か有料かに関係なく)には、アカウントの有効期間中、テナンシのホーム・リージョンに無料で使用できるリソースのセットがあります。これらのリソースでは、コンソールにAlways Free対象ラベルが表示されます(OCI Ampere A1 Computeシェイプについては、コンピュートを参照してください)。
Always Freeリソースを使用して、作成するアプリケーションのサポートに必要な仮想マシン(VM)インスタンス、Oracle Autonomous Databaseおよびネットワーキング、ロード・バランシングおよびストレージ・リソースをプロビジョニングできます。これらのリソースを使用すると、小規模なアプリケーションを実行したり、概念実証のテストを実行したりできます。
参照 URL : Always Freeリソース
利用できるリソースは多岐に渡っており、それぞれ制限はついているものの、以下のリソースを無償で利用することが可能です。
-
インフラストラクチャ
- 証明書
- コンピュート・インスタンス
- コンピュート・インスタンスの IP アドレス
- ブロック・ボリューム
- オブジェクト・ストレージ
- アーカイブ・ストレージ
- ボールト
- リソース・マネージャ
-
データベース
- Oracle Autonomous Database
- Oracle NoSQL Database
- Oracle HeatWave
-
ネットワーキング
- クラスタ配置グループ
- ロード・バランシング
- ネットワーク・ロード・バランサ
- 仮想クラウド・ネットワーク (VCN)
- VCN フロー・ログ
- サイト間 VPN
-
監視および管理
- Application Performance Monitoring
- コネクタ・ハブ
- コンソール・ダッシュボード
- 電子メール配信
- フリート・アプリケーション管理
- モニタリング
- 通知
-
追加サービス
- アウトバウンド・データ転送
- ロギング
- 要塞 (bation)
制限事項について
Always Free の HeatWave では、以下のような制限事項があります。
- テナンシのホーム・リージョンに Always Free DB システムは 1 つしか無料で作成できない
- 高可用性機能はサポートされていない
- MySQL.Free シェイプを使用する必要がある
- HeatWave クラスタは HeatWave.Free シェイプを 1 ノードのみ追加できる
- データおよびログ・ファイルを格納するための固定ストレージ・サイズは 50GB
- 1 日保持の自動バックアップは、デフォルトで有効
- ポイント・イン・タイム・リストアは使用不可
- 手動バックアップは使用不可
- DB システムは常に最新バージョンで作成される
- データベース管理と Ops Insights サービスの統合は使用不可
- HeatWave GenAI はサポートされていない
- 読取りレプリカ機能はサポートされていない
以下の機能については全て利用可能です。
- インバウンド・レプリケーション(やアウトバウンド・レプリケーション)
- HeatWave AutoML
- HeatWave Lakehouse
また、以下の内容についても確認してみました
- Always Free から有償の DB システムへの変更
それでは、実際に Always Free の制限や利用できる機能について確認してみます。
検証
テナンシのホーム・リージョンに Always Free DB システムは 1 つしか無料で作成できない
DB システムを作成する際、以下のように Always Free
が選択できるようになりました。
なお、既に Always Free の DB システムを作成している場合、以下のように Always Free
は選択できなくなります。
高可用性機能はサポートされていない
Always Free
を選択すると 高可用性
は選択できなくなり、スタンドアロン
のみが選択可能です。
MySQL.Free シェイプを使用する必要がある
MDS ノードのシェイプについては、以下のシェイプ以外選択することができません。
- ECPU : 1
- メモリー : 8GB
- ネットワーク帯域 : 1Gbps
HeatWave クラスタは HeatWave.Free シェイプを 1 ノードのみ追加できる
HeatWave クラスタは有効にすることができますが、その場合以下のシェイプ以外は使用できず、ノード数も 1 で固定されます。
- メモリー : 16GB
- ノード : 1
- MySQL HeatWave レイクハウス : ※任意に選択可能
なお、HeatWave クラスタの構成
から別の HeatWave のシェイプを選択することができましたが、その状態で DB システムを作成しても、以下のようにエラーとなり、作成することはできませんでした。
データおよびログ・ファイルを格納するための固定ストレージ・サイズは 50GB
データ・ストレージ・サイズは 50GB で固定されており、ストレージの自動増加(Automatic storage expansion) も有効にすることはできません。
1 日保持の自動バックアップは、デフォルトで有効
自動バックアップはデフォルトで有効になっており、無効化することはできません。
バックアップウィンドウの選択もできず、Oracleによってバックアップ・ウィンドウが任意に決定されるようです。
ポイント・イン・タイム・リストアは使用不可
また、ポイント・イン・タイム・リストアも有効にすることができません。
DB システムは常に最新バージョンで作成される
MySQL のバージョンを選択することはできず、DB システム作成時点での最新バージョンが選択されます。今回の検証では、9.0.1 Innovation
が選択されていました。
なお、今回バージョンアップ時の挙動について検証できませんでしたが、恐らく公式の非推奨および削除ポリシーにのっとり、次のバージョンがリリースされたタイミングで、週次のメンテナンス・ウィンドウのときに自動アップグレードされるのではないかと考えられます。
データベース管理と Ops Insights サービスの統合は使用不可
データベース管理サービス は有効にできないため、作成後に パフォーマンス・ハブ
から DB の詳細情報や監視をおこなうことができません。
手動バックアップは使用不可
手動バックアップについてはグレーアウトしており、作成することができませんでした。
読取りレプリカ機能はサポートされていない
読取りレプリカについても同様にグレーアウトしており、作成することができませんでした。
インバウンド・レプリケーションやアウトバウンド・レプリケーションは利用可能
チャネルの作成を選択することができました。設定項目も通常のインバウンド・レプリケーションのものと同様であったため、同じ機能が提供されているようです。
アウトバウンド・レプリケーションについては確認していませんが、仮想クラウド・ネットワーク(VCN) も最大 2 つまで無償で利用可能であるため、(レプリカ用のサーバーを用意していれば)無償で利用可能だと思われます。
HeatWave Lakehouse は利用可能
DB システムの作成時に HeatWave クラスタの構成
から、レイクハウスを有効にすることが可能です。
こちらにチェックを入れた上で、オブジェクト・ストレージに任意のファイルをアップロードします。なお、Always Free の オブジェクト・ストレージとして合計 20 GB が使用可能です。
その後、事前認証リクエスト URL を発行して、レイクハウスを利用するための準備をおこないます。
手順の詳細については、以前の記事に記載されているのでご参照ください。
その後、以下のようにテーブルを作成して、HeatWave クラスタへロードすると、データを参照することができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
--- テーブルの作成 SQL > CREATE TABLE test.t2 ( r</code> VARCHAR(10),<code>b</code> VARCHAR(10),<code>swpd</code> VARCHAR(10), free</code> VARCHAR(10),<code>buff</code> VARCHAR(10),<code>cache</code> VARCHAR(10), si</code> VARCHAR(10),<code>so</code> VARCHAR(10),<code>bi</code> VARCHAR(10), bo</code> VARCHAR(10),<code>in</code> VARCHAR(10),<code>cs</code> VARCHAR(10), us</code> VARCHAR(10),<code>sy</code> VARCHAR(10),<code>id</code> VARCHAR(10), wa</code> VARCHAR(10),<code>st</code> VARCHAR(10),<code>Datetime</code> VARCHAR(200), free(MB)</code> VARCHAR(10),<code>buff(MB)</code> VARCHAR(10),<code>cache(MB)</code> VARCHAR(10) ) ENGINE=lakehouse ENGINE_ATTRIBUTE='{ "file": [{"par": "https://objectstorage(...)/test-murata/o/vmstat.csv"}], "dialect": {"format": "csv","skip_rows": 1,"is_strict_mode": false,"field_delimiter": ",","record_delimiter": "\\n"}}'; Query OK, 0 rows affected (0.0115 sec) SQL > ALTER TABLE test.t2 SECONDARY_ENGINE = RAPID; Query OK, 0 rows affected (0.0192 sec) Records: 0 Duplicates: 0 Warnings: 0 SQL > ALTER TABLE test.t2 SECONDARY_LOAD; Query OK, 0 rows affected (3.5948 sec) --- テーブルの参照 SQL > SELECT * FROM test.t2 LIMIT 1; +----+---+--------+---------+------+----------+----+----+(...)+----+---------------------+----------+----------+-----------+ | r | b | swpd | free | buff | cache | si | so |(...)| st | Datetime | free(MB) | buff(MB) | cache(MB) | +----+---+--------+---------+------+----------+----+----+(...)+----+---------------------+----------+----------+-----------+ | 31 | 1 | 332288 | 1886468 | 0 | 29498852 | 0 | 0 |(...)| 0 | 2024-09-04 13:01:52 | 1842 | 0 | 28807 | +----+---+--------+---------+------+----------+----+----+(...)+----+---------------------+----------+----------+-----------+ 1 row in set (0.0217 sec) |
HeatWave AutoML は利用可能
Oracle が公開しているワークショップのサンプルデータをインポートしてから、「トレーニング」、「モデルのロード」、「推論」といった機械学習用の関数を使用することができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
--- データの準備 : --- https://github.com/ikomachi226/mysql_heatwave_automl_workshop/blob/main/lab4/iris-ml-data.txt を実行 --- トレーニング SQL > CALL sys.ML_TRAIN('ml_data.iris_train', 'class', JSON_OBJECT('task','classification'),@iris_model); Query OK, 0 rows affected (2 min 17.3837 sec) --- モデルのロード SQL > CALL sys.ML_MODEL_LOAD(@iris_model, NULL); Query OK, 0 rows affected (0.2954 sec) --- 推論 SQL > SET @row_input = JSON_OBJECT("sepal length", 7.3, "sepal width", 2.9, "petal length", 6.3, "petal width", 1.8); Query OK, 0 rows affected (0.0173 sec) SQL > SELECT JSON_PRETTY(sys.ML_PREDICT_ROW(@row_input, @iris_model, NULL)); +----------------------------------------------------------------+ | JSON_PRETTY(sys.ML_PREDICT_ROW(@row_input, @iris_model, NULL)) | +----------------------------------------------------------------+ | { "Prediction": "Iris-virginica", "ml_results": { "predictions": { "class": "Iris-virginica" }, "probabilities": { "Iris-setosa": 0.0, "Iris-virginica": 1.0, "Iris-versicolor": 0.0 } }, "petal width": 1.8, "sepal width": 2.9, "petal length": 6.3, "sepal length": 7.3 } | +----------------------------------------------------------------+ 1 row in set (1.5996 sec) |
HeatWave GenAI はサポートされていない
生成 AI 用の関数を実行したところ、ML_GENERATE()
を実行した際に ML003206: The LLM (***) you requested is not available in your account.
というエラーが発生しました。
恐らく Always Free の DB システムでは実行が許可されていないと考えられます。
1 2 3 4 5 6 7 8 9 10 11 12 |
--- LLM のロード SQL > call sys.ML_MODEL_LOAD('mistral-7b-instruct-v1', NULL); Query OK, 0 rows affected (0.0043 sec) ---自然言語クエリを定義 (「MySQL を称賛する記事を 200 字で書いてください。」) SQL > set @query="Write an article on praise for MySQL in 200 words."; Query OK, 0 rows affected (0.0003 sec) ---テキストベースのコンテンツを生成 SQL > select sys.ML_GENERATE(@query, JSON_OBJECT("task", "generation", "model_id", "mistral-7b-instruct-v1")); ERROR: 3877: "ML003206: The LLM (mistral-7b-instruct-v1) you requested is not available in your account." |
Always Free から有償の DB システムへの変更
変更することは可能でしたが、いくつか手順が必要だったので以下に記載いたします。
- HeatWave クラスタが有効な場合は先に削除する
HeatWave クラスタのシェイプは Always Free 専用であるため、そのまま使用することはできません。 - MDS のシェイプの変更をおこなう
このとき、後ほど HeatWave クラスタを有効にしたい場合は HeatWave に対応したシェイプを選択する必要があります。
- Heatwave クラスタを有効にする
- 必要なデータのロードを再実行する
一度 HeatWave クラスタを削除したため、データを再ロードする必要があります。
なお、手順の実行には、約 50 分程度かかりました。
もしダウンタイムを減らしながら有償の DB システムへ変更したい場合は、たとえば以下のような方法が考えられます。
新規 DB システムへリストア
を選択して有償 DB システムを立ち上げる- アウトバウンド・ レプリケーションをおこない、Always Free の DB システムとデータ同期する
まとめ
ここまで、Always Free の HeatWave で利用できる、あるいはできない機能の検証をおこなってきました。
結論としては、バージョンがほぼイノベーションリリースになってしまうことや高可用性構成が取れないことから、本番環境での運用は難しそうな印象を受けました。
ただし、HeatWave の機能検証には適している(なお GenAI は利用不可)ため、とりあえず無料で HeatWave を使用してみるのにちょうど良いかと思います。
OCI ということで今まで触っていなかった方も、これを期に HeatWave の技術や機能を試してみてはいかがでしょうか?