【NSW】2018/04/19

ノンストップライティングスタート。
SQLについて。
仕事柄、SQLを扱うことが多い。
SQLというのはデータベースとやり取りするためのプログラミング言語。
かなり規格化されているので、扱っているデータベースが異なっていても、
同じようなクエリで様々なデータベースとやり取りできるのはとてもグッド。
このSQLのすごいところは、「なにを」に特化していて「どうやって」という部分を透過的にできているところ。
一般的なプログラミング言語は「どうやって」の部分をちゃんと設計してあげる必要がある。
例えば、デスクトップにあるプログラムというフォルダの実行というファイルを起動しなさい。
というようなことをいちいち記述する必要がある。
一方で、SQLは基本的にデータベースからデータを取ってきたり、データを加工したり、データを扱うことに特化した言語で「どうやって」の部分は意識せずに扱える。
「どうやって」の部分はDBMS(データベースマネジメントシステム)が勝手にやってくれる。
なので、「5月の売り上げ実績を男女別で取ってきて」というような、お願いをコンピュータに出すことで、あとは勝手にコンピュータが判断して、該当するデータを取ってきてくれる。
とても便利だ。
どこにあるどのデータをどういう手順で取ってくるというようなことを記述しなくていいので、コードがシンプルになる。
シンプルになれば、それだけ開発効率も上がるし、他の人がコードを読むときも悩む時間が短縮される。
そんな便利なSQLだがいいところばかりでもない。
データベース、SQLと切っても切れない関係にあるのが、
パフォーマンスの問題だ。
現代で一般的なデータベースはRDB(リレーショナル・データベース)というモデルが一般的だ。
他にはネットワーク型やツリー型などがある。
このRDBの特徴は2次元の表でデータを表すことにある。
エクセルの表のイメージに近い。
これのおかげで、データが扱いやすく、そしてデータの物理的な位置を意識しなくいい。
だが、このRDBは基本的に複数の表を結合して使う。
例えば、売り上げのデータと顧客情報のデータを別の表で持っていて、
それをくっつけて、顧客の属性ごとの売り上げ実績を出すような感じ。
この表と表をくっつける処理をすると処理速度がとても遅くなる。
1つの表の時は、数秒で終わるのに、複数の表を結合すると数十秒、数分と処理時間が大幅に長くなったりする。
他にも、サブクエリと呼ばれる方法を使用するとパフォーマンスが悪くなったり、カラム名に算術演算子を使うとパフォーマンスが悪くなったりと、
パフォーマンスを落とす要因が山のようにある。
覚えることは他の言語と比べて少ないけど、極めようとすると奥が深いのがデータベースの世界なのである。

1137文字/15分

#ノンストップライティング #NSW #メモ


この記事が気に入ったらサポートをしてみませんか?