「フラッシュストレージ」とは半導体メモリにデータを格納するもの全般を指しています。現在、「フラッシュストレージ」と言ったときには、ほとんどが「NAND型フラッシュメモリ」という半導体素子を使ったものを指します(この他にも「NOR型フラッシュメモリ」がありますが、一般には回路の問題や製造コスト面で利点が少ないことからほとんど使われていません)。
HDDと比較した際の半導体メモリを利用したストレージの特徴として、ディスク装置(回転体)が不要な点で消費電力面で優位であることに加え、磁気ヘッドによるデータ読み取りが必要なく、それに伴うデータ読み書きの遅れがない点が挙げられます。
半導体メモリは、データ保護の性能などによって細かく種類が分かれていますが、製造方式とデータ書き込み方法が異なる「MLC(Multi Level Cell)」と「SLC(Single Level Cell)」の2種類に大別できます。
MLC方式の半導体メモリは安く調達できる利点があります。一方のSLCはMLCと比較して価格が高いため、データ当たりの単価も相応に高くなります。
SLCは一般的に信頼性やパフォーマンス面でMLCよりも優れているとされています。このため、ハイパフォーマンスでかつ重要なデータを扱う必要がある場合にはSLCを採用することがほとんどでしたが、現在では、MLC方式の半導体メモリでもSLCに近い水準でエンタープライズレベルの信頼性を担保できる「eMLC」といったものも出現しており、MLCが主流となりつつあります。
製品導入を検討する際には、容量単価だけでなく、どのような半導体メモリを採用しているかも、要件と突き合わせて検討するとよいでしょう。
フラッシュストレージを「サーバーとの接続方法」で分類すると、大きく以下の3つがあります。(1)PCのHDDと同様にSATA(Serial ATA)によって接続するもの、(2)サーバーに配置されているPCIeバススロットを介して接続するもの、(3)ネットワーク経由で接続するものです。
SATA(Serial ATA)接続型SSDは、SATA接続のHDDをフラッシュストレージに置き換えたものです。I/O性能は高まりますがSATAの帯域幅をそのまま継承しますので、本稿の主題であるDB高速化を考える際には、例えば単独のPCサーバーで運用するような小規模なデータベースサーバーなどに適しているといえます。
サーバーのマザーボードに設置されているPCI Express(PCIe)というバスを介して接続するタイプのSSDです。PCIeの帯域幅をそのまま利用できる点が利点です。PCIe規格は世代を重ねるごとに性能が向上しており、本稿執筆時点(2015年4月)の最新は「PCIe gen3」と呼ばれる第三世代で、1レーン当たりの実効データ転送速度は片方向で1Gビット/秒。最大32レーンが利用できるので片方向32Gビット/秒のデータ伝送が可能です。より広帯域が必要になる大容量のデータ読み込みなどが発生する場合、PCIeバス接続のSSDを使う方法も検討できます。
ディスクドライブ向けストレージコントローラーインターフェースの規格には「AHCI(Advanced Host Controller Interface)」がありますが、フラッシュストレージ向けには「NVMe(NVM Express)」という規格があります。もともとSSD向けに設計されたストレージコントローラーインターフェースです。半導体メモリを利用する際、AHCIよりも処理オーバーヘッドが少なくなるNVMeを利用できれば、より高いI/O性能を期待できます。現在、サーバーOSである「Windows Server」などがNVMeに対応しており、対応製品が出現しつつあることから、今後、一層普及するものと考えられます。
フラッシュストレージアレイは、簡単に言うと、ディスクアレイに使われてきたHDDをSSDに置き換えたものです。HDDの場合と同様に、NFSなどのプロトコルでサーバーと接続します。一部にフラッシュストレージを採用した構成のものもの他、全てをフラッシュストレージで構成した「オールフラッシュストレージアレイ」があります。
ただし、ディスクアレイのHDDをSSDに置き換えただけでは周辺ソフトウエアがHDDを前提とした挙動をするため、無駄が多くなる可能性があります。データ保護手法の一つであるRAIDの仕組みも、ディスクアレイが持つファームウエアがHDDを想定している場合、必ずしもフラッシュストレージアレイで効果的に動作するわけではありません。
こうしたことから、オールフラッシュストレージアレイ製品を提供するストレージベンダーの多くは、当初からフラッシュを前提とした設計を行っています。
ここまでで、データベースアプリケーションを高速化する際に注目される「フラッシュストレージ」の種類を簡単に見てきました。次回は、フラッシュストレージ製品の性能や品質を左右するファームウエアにどういった機能が盛り込まれているか、あるいはフラッシュストレージならではの仕組みをどう盛り込んでいるかを見ていき、データベースアプリケーション高速化にどのように効果があるのかを解説します。併せて、インメモリデータベースの要である「メモリ」や「カラムナー(列指向)データベース」の関係なども紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.