2017.05.17
OSの深層部分、知れば知るほど奥深い、macOSの仕組みを解き明かす。
データを検索するために
コンピュータに入力したデータは、そのほとんどがあとから容易に検索でき、素早く見つけることができます。ただ、テキストファイルのようなデータはそうはいきません。本連載のような2ページ程度の記事から指定した単語を拾い出す程度ならともかく、何百ページもある書類から指定した1枚だけを探し出すといった検索は、コンピュータでもそう簡単にはできないのです。
そこで、ただ単純にデータを積み上げるのではなく、検索しやすく、処理しやすいようデータの形を整え順序よく並べ直すことで、検索や更新、削除の効率を上げるということがコンピュータの黎明期より行われてきました。この、検索しやすいよう整理されたデータの集まりを「データベース」と呼びます。
一方、データベースの中でも個別データを格納する「表」と、「その表と他の表にあるデータの間の関係」を定めて、より複雑な条件での検索ができるデータベースを「リレーショナルデータベース(Relational DataBase=以下、RDB)といいます。そして、このRDBを作ったり、その中のデータを検索したり編集したりする一連のソフトウェアが「RDBMS(Relational DataBase Management System)です。
自由に使える「SQLite」
「SQLite」は、D・リチャード・ヒップ氏が提供しているRDBMSです。 その特徴は2つ。パブリックドメインで誰もが自由に利用できること、そして、組み込み型RDBMSであることです。
業務向けの「オラクル(Oracle)」や「SQLサーバ」、オープンソースの「MySQL」や「PostgreSQL」といった一般的なRDBMSは、「サーバクライアント型」になっています。RDBMSとしての処理は強力なサーバマシンで行い、データベースを利用したい各ソフトウェアはクライアントとして接続するという方式です。この方式を採用すると、同じデータベースを多数のクライアントで共有できますし、処理を別マシンに分けることで性能の向上も期待できます。
一方、SQLiteはライブラリの形で提供され、ソフトウェアなどに内蔵されます(「組み込み形式」)。そのため、データベースの利用はソフトウェアだけにとどまります。この方式は、サーバを利用してデータを上手に共用したり、負荷を分散することには向いていませんが、メールの送信者や件名を全部データベースに格納しておく、ブックマークを格納しておくなどして検索を高速化するなど、デスクトップソフトウェア個別での利用に適しているといえます。
macOSやiOSでは、SQLiteをメールやサファリといったソフトウェアからコアデータ(CoreData)まで、さまざまなところでデータの管理に利用されています。また、アップル以外にも、WEBブラウザ「ファイアフォックス」などもSQLiteを内部で使用していることで知られます。