フラットファイルから SQLite への移行 – 多くの機能が追加されますが、満たされない要件は?
12 月から 2 月にかけて、私はフラットファイルシステムに関する短い連載のブログを投稿しました。この連載ブログでは、フラットファイルの継続的な使用について取り上げると共に、フラットファイルが将来使用できなくなる理由についても取り上げています。
1 回目の連載では、フラットファイルと、組み込みソフトウェアアプリケーション開発者がフラットファイルをすぐに採用した理由に焦点を当てました。次に、2 回目の連載では、組み込み開発者がデータベースの使用に消極的である理由について説明しました。3 回目の連載では、開発者がフラットファイルシステムに固執する理由を検討しました。最終回の連載では、フラットファイルから移行する組み込み開発者のためのチェックリスト(英語)を掲載しました。
その続きである今回の連載では、多くの組み込み開発者がフラットファイルから離れる道筋において次の足掛かりとなる、SQLite に注目したいと思います。それは進歩しているとはいえ、あなたがこの石の上に飛び乗るべきか、もしまだ踏ん張っているのであれば飛び降りるべきかを納得させてあげたいと思います。SQLite がフラットファイルからのポジティブなステップアップである理由と、どのようにステップアップするかをまず示す必要があるでしょう。その際、SQLite が実際の要件に適用される場所と方法ももちろん、示します。SQLite の Web サイトで述べられているように、SQLite ユーザー自身によると、SQLite の適切な使用法(英語)は次のようなものです。「SQLite はクライアント/サーバー データベースとは競合しません。SQLite の競合製品は fopen() です。」このような使用法は、SQLデータベースエンジンはエンタープライズデータの共有リポジトリであることを意図しているため、SQLデータベースエンジンと比較されることを意図していないという彼らの基本的な考え方に結びついています。SQLite のサイトとそのコミュニティによると、SQL データベースエンジンが共有リポジトリになるには、スケーラビリティ、同時実行性、集中管理、および制御が必要です。一方、SQLite は、データベース管理者を不要とする要件がある個々のアプリケーションとデバイス(代表的な IoT デバイスを挙げた標準的なリストが SQLite ユーザーによって提供されています)のローカルデータストレージに焦点を当てています。
SQLite ユーザーはこうも語っています。「プラットフォーム間のデータ転送をサポートしたり、社内で臨時に開発した、複数のデータ型から成るデータセットをサポートしたりできるコンパクトな単一のファイル形式があれば、組み込み環境にとって理想的だ」。実際、SQLite はベンチマークを行って、fread() や fwrite() 1を使用したそのようなタイプのデータの読み書きとファイルシステムよりも 35% 高速であることを示してきました。
弊社は、SQLite ユーザーが述べていることの多くに同意します。まず、SQL データベースエンジンが前述の要件を満たす必要があります。次に、ローカルデータ管理がプラットフォーム間で移植可能で、かつ複数のデータ型をサポートできることが必要です。そして最後に、モバイルと IoT のエッジでは必ず管理者不要の環境にする必要があります。
そう申し上げたうえで、それでも、もし、ケーキを食べることと、ケーキを持ち続けることが両方とも叶うとしたらどうでしょう? つまり、SQL データベースエンジンからエンタープライズの共有データ ストアの特性について、すべての機能とメリットを得ると同時に、共有データストアをスケールダウンしてローカルのモバイルまたは IoT アプリケーションに直接組み込むことができ、複数のデータ型とプラットフォーム間での移植性がサポートされてデータベース管理者も不要になるとしたらどうでしょうか?
「はい、ぜひ導入します」と回答していただきたいと思いますが、次のような妥当な理由によって回答を先送りすることもできます。
「1 番目の理由としては、『SQLite とファイルシステムは無料なので人気がありますが、オープン ソースの SQL データベースエンジン(MySQL、Postgres、MariaDB など)は、IoT やモバイルのフットプリントにスケールダウンして実行することができない』というものです。また、アプリケーションに組み込んで実行することもできません。
2 番目の理由としては、どうして人々が、『なぜあなたはケーキを食べると同時にそのケーキを持ち続けることができるのか?』などという愚かな比喩を使うのか、ということです。『私にはトラックでなく乗用車が必要です』の方が適切です。ケーキの譬え(たとえ)はやりすぎです。なぜわざわざケーキなのでしょうか?」
私からあなたへの回答は、「ケーキの譬えが非常に 2015 年的だったから」ということです(ちなみに、SQLite の「適切な使用法」ページが更新されるのはこれで最後です)。実際、2020 年には(2025 年には間違いなく)、構築した任意のアプリケーションを「乗用車(SQLite)」と「トラック(エンタープライズデータ ストア)」に搭載できる機能が必要になるでしょう。そうです、WiFi-6 と 5G の帯域幅を使用した場合でも、従来よりもはるかに多くのデータをローカルに保存して分析する必要があります。ただし、ピアツーピアおよびエッジ/クラウドのデバイス管理、ガバナンス用のコンテキスト データの共有、一般的な運用状況などを処理するニーズとデータ量の大幅な増加により、最大限多くのものが決定されます。また、待ち時間を回避するには、このような増加はローカルで発生する必要があります。
さらに、複数のダウンストリームソースからデータを取り込むゲートウェイオペレーションは言うまでもなく、多くのピアツーピアオペレーションおよびエッジ/クラウドオペレーションでは、それらのダウンストリームデータソースを同時実行および制御できる必要があります。ゲートウェイとエッジデータストアには、プラットフォーム間で同じアーキテクチャとデータ可搬性を使用できるスケーラビリティがあることも必要です。最後に、ゲートウェイに移動するデータセンターやクラウドの機能が多い場合は、中央の機能と考えていた機能もそのゲートウェイに移動する必要があります。
そこで、このことを、「あなたの乗用車(SQLite)が、二輪駆動(データセンターやクラウドの機能)を必要とする場合がほとんどだが四輪駆動(中央の機能)のオプションを必要とする場合もある」のと同じだと考えてください。また、乗用車(SQLite)に牽引能力が必要な場合もあります。しかし、これを逆にも考えてみてください。つまり、あなたのトラック(エンタープライズデータストア)は常にボートを牽引していたりオフロードレースに使用されていたりするわけではありません。また、追加の搭乗者を乗せる場合もあるので、高級車にあるのとほぼ同じ快適さが必要な場合もあるでしょう。
データ管理とこの譬えについてまとめると、2020 年から次の 5 年までのエッジには、SQL データ ストアのデータ センターに求められてきたすべてのもの(トラックの要件)が必要になります。それだけでなく、ローカルデバイスがスタンドアロンの場合のデータ管理に求められるあらゆるもの(乗用車の要件)も必要になります。
要するに、あなたは、超小型車 からモンスターサイズの CRV までのスケーラビリティを持つ SUV を必要としているということです。これは残念ながら SQLite が対応できる機能ではありません。SQLite を使用する場合は、SQLite をリモート側にある他のデータベースに必ず固定する必要があります。この強制的な固定の欠点については、次回連載の当ブログでご説明します。
***************************************************
Actian社は、最新ビジネスに対応したオペレーショナルデータウェアハウスとエッジデータのマネジメントソリューションの分野で一歩リードしています。当社のソリューションにより、オンプレミスやクラウド、モバイル機器やIoT機器が設置されたエッジサイドのデータを管理することをサポートします。また、Actian社とエージーテックは、ビジネスアジリティのサポートに必要な技術基盤の開発をサポートします。詳しくはwww.agtech.co.jp/actian/をご覧ください。
(April 7, 2020 Lewis Carr 著)
Lewis Carrについて
戦略的な垂直産業、水平的ソリューション、製品マーケティング、製品管理、ビジネス開発専門の上席で、データ管理・分析、モバイル・IoT、分散クラウドコンピューティングを含むエンタープライズソフトウェアに重点的に取り組んでいる。