組み込みデータベースって必要? 不必要?:組み込みDBプログラミングの道しるべ(1)(1/2 ページ)
「エンタープライズ系の話」「うちはフラットファイルだし」などと組み込みDBのことを自分には関係ないものだと思っていませんか?
組み込み開発に携わっている皆さん、“データベース”と聞いてどのように感じますか?
「どうせエンタープライズ系のお話でしょ」「うちはフラットファイルで管理しているし」と、“自分には関係ないもの”だと思っている方も多いのではないでしょうか。
しかし、そうもいっていられません。ご存じのとおり、近年さまざまなデータを持つ情報家電が増えてきました。皆さんが普段何げなく利用している“携帯電話”もその一例です。
一般的な携帯電話で取り扱いが可能なデータとは一体どのようなものがあるのか、以下に示します。
- 氏名/電話番号/住所などのアドレスデータ
- 電子メール、ショートメール(SNS)などのメールデータ
- 内蔵カメラにて撮影された画像や動画データ
- メールの添付やWebからダウンロードされた画像や動画データ
- WebサイトからダウンロードされたものやUSB経由でPCから転送された音楽データ
- キャリアの配信サービスによって配信された動画データ(番組情報を含む)
- 携帯アプリなどのプログラム
- 携帯アプリで利用されているデータ(スクラッチパッドなどに保存されるもの)
- 携帯ブラウザのお気に入りや画面メモのデータ
- 簡易留守番電話機能や音声メモなどの音声データ
- 携帯ブックリーダで再生される本のデータ
- ワンセグの録画された番組データ
携帯電話で、miniSDやmicroSDカードなどの外部ストレージを利用することはいまでは一般的といえますし、外部ストレージが利用できないような薄型の機種(ソフトバンクのSC707など)でも、100Mbytes以上の内部ストレージを持っており、さまざまなデータを携帯内部に保持して利用できるようになっています。100Mbytes以上のストレージでは、保存する画像データのサイズによって異なりますが、およそ2万枚以上の画像データを保存できるそうです。さらに外部ストレージともなると、その容量は数Gbytes単位となりますので保存できる画像の量はさらに膨れ上がります。同様に、音楽データを保存した場合も内部ストレージで数百曲以上、外部ストレージでは数千から数万曲に達するため、スクロールでデータを検索することはほぼ不可能といえます。こうしたことから、すでに数機種の携帯電話でも組み込みデータベースが利用されるようになってきました。また、携帯電話向けのフレームワークであるドコモの「MOAP(Mobile Oriented Applications Platform)」やauの「KCP(KDDI Common Platform)」では組み込みデータベースとの親和性が強くなっており、データベースを搭載した機種も登場しているくらいです。
携帯電話と同様に大量のデータを扱う製品として“カーナビ”があります。現在のカーナビはDVD-ROMを利用するものやHDDを搭載したものがありますし、取り外しが可能なPND(Portable Navigation Device)のようにSDカードなどの外部ストレージを利用するものなど、実にさまざまなストレージを利用しています。PNDでも数Gbytesのデータを取り扱いますし、HDD搭載のモデルでは数十Gbytesものデータを保持しており、データの更新にも対応しています。
カーナビで利用するデータを分類してみると次のようになります。
- 地図データ
- ランドマークデータ
- 地図に付随する観光地データ
- 電話番号データ
- サウンド/ボイスデータ
- 画像データ(スキンや壁紙など)
- 学習した経路情報
- 登録した地点情報
- 音楽データ(オーディオ機能搭載機種の場合)
電話番号データやランドマークデータ(施設情報)であれば数百万件から数千万件以上となり、これらのデータを高速に検索するにはそれなりの工夫が必要となり、インデックスを利用したり、検索しやすいようにデータを並べたり、検索アルゴリズムを利用したりしています。最近では検索を早めるために組み込みデータベースを利用した製品も登場しています。
携帯電話やカーナビ以外の“情報家電”も大量データと多種多様なデータを取り扱うようになっており、これらのデータを効率よく利用し、管理していくために組み込みデータベースの利用や検討が進んでいます。
ではなぜデータを利用するのにデータベースが適しているのでしょうか? この連載のはじめとして、まずはデータベースの必要性について説明していきましょう。
データベースの登場
さて、読者の皆さんはデータベースがいつごろから利用されているかご存じでしょうか。データベースの歴史を説明する前に、ここでコンピュータの歴史を少しだけ説明させてください。
“最初のコンピュータ”として有名なのは、1946年に完成したペンシルバニア大学の「ENIAC(Electronic Numerical Integrator and Calculator)」ですが、実はその4年前(1942年)に、アメリカのアイオワ州立大学のJohn Vincent Atanasoff氏とClifford Edward Berry氏によって「ABC(Atanasoff - Berry Computer)」というコンピュータが作られました。ABCは真空管約300本で構築され、2進数の採用、AND回路やOR回路などの論理回路を使用した演算装置などを備えており、メモリには回転ドラムが利用されていました。当初のコンピュータはある意味本当の計算機であり、特定の計算を行うものでデータを蓄えたり、利用したりするものではありませんでした。ここからコンピュータの歴史がはじまります。
一方、データベースはというと……。
まずデータベースの概念は1959年にW.C.MaGee氏が「Journal of the ACM Volume 6, Number 1, January 1959」に、「Generalization: Key to successful electronic data processing」という論文を発表しており、ここからデータベースの歴史がはじまります。この論文はコンピュータに蓄積されるさまざまなデータを源泉ファイル(source file)という概念に集約することにより、データの重複の回避とシステム拡張の効率化が可能になると書かれています。また、実際にシステムとして構築した場合、莫大なファイルから効率よくターゲットとなるデータを検索するための効率的な手段が要求されることやデータの保守技術や機密保持の技術が必要になることなども書かれています。いわば、この論文はデータベースシステムの概念を書いたものであるといえるでしょう。
実際にデータベースが登場するのは、1964年にGE(General Electric)社がGE-225という自社のコンピュータで稼働する「IDS(Integrated Data Store)」をリリースしてからです。このデータベースが世界初のデータベースとなります。このIDSを開発した中心人物は当時GE社の主任技師であったC.W.Bachman氏で、Bachman氏はその後さまざまなデータベースに関する論文を発表しており、データベースの発展に欠かせない人物として挙げられます。IDSはネットワーク型データモデルと呼ばれるデータモデルを持つデータベースで、このネットワーク型データモデルを利用した言語仕様、一般的にCODASYLデータモデルと呼ばれるものが生み出され、プログラム言語でのデータベースの取り扱いの標準化がはじまりました。CODASYLという仕様はいくつかの言語を定義しており、この定義の中にデータ記述言語(DDL)やデータ操作言語(DML)も定義されています。
1960年代、データベースを利用したシステムとして有名なのが1962年に稼働開始した航空券予約システムである「SABRE(Semi-Automatic Business Research Environment)」でしょう。こちらはIBM社とアメリカン航空とが共同開発したもので複数の高速コンピュータとデータ通信回線を接続し、全米50都市に散在する端末から、座席予約や乗客名簿の管理をリアルタイムで行えるようにした画期的なものでした。SABREは電話回線を使ってリアルタイム処理を行うシステムとして世界で最初のものともいえます。
1968年には階層型データモデル(ハイアラキカルデータモデル)を実装したIBM社の「IMS(Information Management System)」がリリースされ、翌年の1969年にIBM社から最初のTPモニタであるCICSが発表され、大規模データの取り扱いが可能になっていきます。このTPモニタの登場によって、エンタープライズ分野において本格的にデータベースを使ったシステムの歴史が始まっていきます。
一方、1970年には、データベースを実際に利用している多くの読者の方もご存じの、E.F.Codd博士のリレーショナルモデルに関する論文「A Relational Model of Data for Large Shared Data Banks」が1970年にIBMの社内報に発表され、リレーショナルデータベースの歴史がはじまります。
このように説明していくとなんだかエンタープライズ系の話のように聞こえてしまいますが、1960〜70年代前半のコンピュータに搭載されているメモリと、現在組み込み分野で使われているメモリのどちらが大きいかと考えると、極小の電子デバイスを除けば現在組み込み分野で利用されているものの方が大きいといっても過言ではないでしょう。もちろん、情報系システムと組み込みソフトウェアでは、いろんな要素が異なりますので一概に比較することはできませんが、少ないメモリで大量のデータを効率よく扱うための仕組みであるデータベースが情報系システムだけでなく、組み込み分野でも利用されるのはコンピュータの歴史からいっても自然ではないかと思います。
では、組み込み向けのデータベースはいつごろから登場したのでしょうか。
ISAM(Indexed Sequential Access Method)形式のデータベースで有名な「Btrieve」は1982年に最初のバージョンが登場しています。1980年代には、フラットファイル形式のデータベースを扱うためのライブラリ製品も登場しています。海外の携帯電話では搭載実績のあるオープンソースの組み込みデータベース「Berkeley DB」は1996年に最初のバージョンが登場しています。
このように組み込み分野においても、データベースはすでに10年以上の歴史がありますが、実際のところデータベースを利用している組み込み機器はほんのわずかです。
しかしながら、前述のとおり組み込み機器の急速なデータ容量の増加によってデータベースを利用する必要性が高まりつつあるのも現状です。
年 | カテゴリ | 事象 |
---|---|---|
1942 | ハードウェア | アイオワ州立大学のアタナソフ(John Vincent Atanasoff)とベリー(Clifford Edward Berry)が世界最初の電子計算機ABC(Atanasoff - Berry Computer)を開発。真空管は約300本 |
1945 | 論文 | Vannevar Bush氏がハイパーテキストの概念の基礎となる「Memex(MEMory EXtension)」をAtrantic Monthly誌に論文「As We May Think」で提唱 |
1946 | ハードウェア | ペンシルバニア大学の(ENIAC:Electronic Numerical Integrator and Calculator)完成 |
1949 | ハードウェア | 最初のノイマン型コンピュータ「EDSAC(Electronic Delay Storage Automatic Computer)」稼働 |
1950 | ハードウェア | 大阪大学工学部にてENIAC型演算装置を開発 |
1951 | ハードウェア | 世界初の商用コンピュータ「UNIVAC-1(Universal Automatic Computer)」登場 |
1953 | ハードウェア | IBM社初の商用コンピュータ「IBM-701」登場 |
1954 | 論文 | John Backus氏がFORTRANに関する最初の論文「Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN」を発表 |
1956 | ハードウェア | IBM社が最初のディスクストレージであるIBM RAMAC 305をリリース |
1957 | ソフトウェア | IBM 704上で科学技術計算用の高級言語FORTRANが登場 |
1959 | 論文 | W.C.MaGee氏が「Journal of the ACM Volume 6, Number 1, January 1959」に、「Generalization: Key to successful electronic data processing」という論文を発表 |
1959 | ソフトウェア | 米国政府の標準言語策定委員会(CODASYL)が設立され、COBOLの言語仕様が発表。1960年に最初の言語CODASYL-60として登場 |
1962 | システム | 世界初のリアルタイム処理を持つ航空券予約システムSABREが稼働開始 |
1964 | ソフトウェア | GE社がGE-225で稼働する最初の商用DBMSであるIDS(Integrated Data Store)をリリース |
1964 | ソフトウェア | 米ダートマス大学のDartmouth College氏とJohn Kemeny氏がBASIC言語を開発 |
1964 | ハードウェア | IBM社がOSを搭載したSystem360を発表 |
1968 | ソフトウェア | IBM社が階層型データモデルを実装したIMS(Information Management System)をリリース |
1969 | ソフトウェア | IBM社が最初のTPモニタであるCICSをリリース |
1969 | ソフトウェア | 米国ベル研究所のKen Thompson氏とDennis M. Ritchie氏がUNIXを開発 |
1970 | 論文 | E.F.Codd氏がリレーショナルモデルに関する論文「A Relational Model of Data for Large Shared Data Banks」を発表 |
表1 コンピュータ関連とデータベースの歴史 |
Copyright © ITmedia, Inc. All Rights Reserved.