データベースとデータ – 引き分けか負けしかない世界

今回は、データベースとデータについて考えてみようと思います。
学術的な話ではないので、きちんと勉強したい人はしかるべきところへどうぞ。
データベースの嬉しさと大変さについて私の見解を語ります。

僕は生産管理系の業務アプリ開発が専門なのでそれなりにデータベースに触れてきました。
しかし、担当するジャンルによってはデータベースに一切触れません。
縁がなくあまり触れなかった人に、少しでも興味が沸く情報を提供できれば幸いです。


さて、データベースとは何なのでしょう。
Wikipediaによると以下のような感じです。

データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 
通常はコンピュータによって実現されたものを指す。
コンピュータを使用したデータベース・システムでは、
データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。
プログラムで扱うデータ構造やデータそのものを独自実装の場合に比べて少ない工数で操作できるようにしている。
膨大なデータを扱う現代の情報システムでは最重要と言える技術

蓄積と検索が容易というのが特徴のようですね。
容易といってますが、スキルを持っている人には容易という言い方になります。

データベースの特徴はよくACID属性などと言われたりします。
Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)ですね。
簡単に言えばデータが壊れにくかったり、整合性がちゃんと担保されているというアレです。
ここが案外データベースに触れてこなかった人にはわからない嬉しさです。
複数のシステムが頻繁に同時にファイルに書き込んだらどうでしょう?
実装が大変ですね。そういう事です。

データベースの特徴がACID属性というのは半分合ってて半分間違っています。
これはデータベースの特徴ではなくトランザクション機能の特徴です。
NoSQL系のデータベースはトランザクション機能がないものも多々存在します。

お金の管理など1円たりとも間違えてはいかないようなものには
トランザクション機能を有するデータベースを使います。
一方で、大量の設備の動作ログなどおおまかな傾向やら予測に使用するものは
レスポンスを落とすトランザクション機能を捨てNoSQL系のデータベースを使ったりします。
最近はリレーショナルデータベース(以下,RDB)で有名な
Microsoft SQLServerもカラム型データベースなるものが出てきており
ログ収集などに強いものが出てきています。
僕は使ったことがありません。


慣れの問題もありますが、習熟コストで言えばRDBが優位です。
世の中の普及度から考えてもそうなのでしょう。
NoSQLにSQLのインターフェースが用意されているものもあります。
Not Only SQL(SQLだけじゃない)ですからアリと言えばアリですが、
呼び名から考えるとかなりナシ寄りです。

メジャーなRDBはGUIが充実しており非プログラマーでも簡単に使えます。
Accessなら使えるという人も結構います。

サーバーを立てて運用するとなると構築や開発スキルより運用スキルが大事になってきます。
運用側のスキルを持っている人は少数です。
常にゼロ(問題が起きないこと)を目指す仕事なので、
怒られることはあっても褒められることはありません。
常に不具合ゼロを目指す製造の品質問題に良く似ています。
製造引き分けか負けしかない仕事(*)というのは言い得て妙です。

この報われない仕事を専門とする人は中々いないようです。
第一人者になればおそらく引く手あまたでしょう。
とはいえ製造業に勤めるちょっとパソコンに詳しい人が
片手間で何とかやってるのが実情ではないでしょうか。

近年IoTやデジタルトランスフォーメーションの流れで大量のデータを扱うようになりました。
これまでの数十万件、数百万件程度のレコード数のノリでRDBを使います。
徐々にレスポンスの悪化が目立ち始め、
使えないわ捨てられないわのスペシャルデータベースが出来上がります。
データベースが死ぬと設備やシステムが止まるというオマケつき。

安易にクラウドに逃げようというのが今の流れです。
捨てられない人はどんどんコストが膨み息苦しくなっていきます。


素人がデータベースに手を出す時代は終焉を迎え始めてきました。
しかし長年片手間とはいえ運用できてきた矜持もあります。
「そんなの簡単だよ」とか言っちゃうかもしれません。

一方でエンジニアにしか使えないデータベースに疑問を感じます。
データベースの役割はこれだけです。

検索や蓄積が容易にできるよう整理された情報の集まり

検索の課題は既に解決されており、蓄積の問題もスケールアウトなど様々な方法が議論されています。
あとは、どれだけ低コストで簡単にできるかですね。
運用スキルを極めるのが先か技術革新が先か。

データベースとデータ - 引き分けか負けしかない世界

おわり

コメントする

メールアドレスが公開されることはありません。