Help us understand the problem. What is going on with this article?

DBサーバーにAzure Table Storageと言う選択肢

More than 1 year has passed since last update.

個人で作ってるWebアプリ(Node/Express.js)に使うDBを選定中でして、Azure Table Storageをお試しで使ってみたら中々良さげだったのでざっくり紹介。

Azure Table Storage

Microsoft Azure Storageの一種で、ドキュメント型データストレージサービスです。

所謂、NoSQL(Mongo)的な感じのJSON構造で保存/管理するタイプです。

良かった所

1. 安全/堅牢

これは何より大切です。
商用実績も多数ある堅牢サービスを個人レベルで使える、この安心感は大きいと思います。

オンプレ(自宅)管理は外部へ公開するとなると、セキュリティ設定、証明書発行、ドメイン取得などなど...
大掛かりになってしまい、設定漏れリスクや時間やお金が掛かります。
バックアップや冗長性の確保なども考えると、キリがありません。

セキュリティ

デフォルト状態でHTTPS接続/非公開の設定になっており、うっかり公開したままと言う事故も防げます。
公開する際のアクセス制御/IP制限/CORSも、ポータルサイトから簡単に設定可能です。

可用性

最低設定でもデータセンター内ノード間での冗長構成となります。
他にも、データセンター内AZ間での構成や、複数データセンター間での構成も、設定1つで何時でも変更可能です。

(AZ: Availability Zone ... データセンター内はAZと呼ばれる区画毎に、電力供給/ネットワーク/冷却装置/消防設備などのインフラが隔離されている。一部のAZが停電や出火により万一落ちても、他AZは問題なく稼働が続けられる構造)

簡単/便利

各言語プラットフォームで公式ライブラリが充実しており、Mongoライクな操作が可能になっています。
公式ドキュメントも一通り揃っているので、それをなぞれば基本すんなり行けます。

アプリケーションサーバーとの接続も接続文字列と呼ばれるキーをコピペするだけなので至極簡単。

なお、私はセッション管理にexpress-sessionを使っているのですが、Table Storageでセッションストアが可能になるライブラリがありました。
これは嬉しい。

各言語向けライブラリ

余談

Cosmos DBはTable Storageの上位互換です。
Table Storageは各種Storageサービス(Blob/File/Table/Queue)内の1つですが、Cosmos DBはデータベース専門となっています。

SQL/Mongoから選択可能で、高速応答と世界中のデータセンターに冗長構成を撒ける鉄壁さがウリなのですが...
最低構成でも、3分に1回程度の頻度で自動バックアップが走る為、たとえ数MBしか保存しておらず、1ヶ月殆どアクセスしなかったとしても、ほぼ720時間分の料金が発生します。

私はその事を知らず、数日間お試しで使ったまま2ヶ月間放置して、10900円の請求が来る羽目に...
それがTable Storageへ移行するきっかけでした。

これは流石に、完全な商用前提サービスだと感じました。

3. 安い

いくらキラキラした能書きを並べられても、お値段が張ってしまっては採用出来ませんからね...
普通に使う分であれば、かなり安く済みます。

料金の例

大体、1ヶ月で缶コーヒー1本分くらいの料金で運用可能です。

  • 汎用v1/LRS/Standard/Hotでの構成
    • 容量単価 - 7.84円/GB
    • アクセス(読み書き)単価 - 0.04円/10000件

良くなかった所

あまりヨイショしすぎてもアレなので、不満点も上げておきます。

リソース管理

Blob Storageなどはポータルサイト上でリソース編集可能なのですが、Table Storageは既存キーの値を編集する事は可能でも、キーを新規に増やす事は出来ません。
Azure Storage Explorerと言う専用ツールか、各種プログラム経由でしか増やせません。

それが少し手間だと思いました。
が、ドキュメント毎にキーを好き勝手増減できてしまう仕組み上、あえて対応してないのかも...?

2019/02/12追記

何と、ポータルサイト上でキーの新規追加が可能になっていました。
これは便利。

まとめ

最初はTable "Storage"という名称に迷ってしまったのですが、使ってみたら中身は普通のNoSQLデータベースでした。
高性能でお財布にも優しく、中々優秀だなぁと感じました。

皆さんも、ご検討されてみては如何でしょうか。

dojyorin
野生のどじょう。 趣味と業務効率化の一環でC#, JS, Arduinoをかじる。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away