見出し画像

情報処理の高速化はマシンパワーを上げるか並列処理させるかの2パターンで対応する

はじめに

最近、大量のデータ処理をするバッチ処理を流す作業をしてたりするんですが、データが沢山あると処理にめちゃくちゃ時間がかかるんだなぁというのを数年もIT業界にいるのにようやく体感してきました
実際の業務データって確かにクソ大量に発生するよなぁと
コンビニとかも数万店舗があって、例えばセブイレだけ見ても、1日に1店舗平均1000人がレジにとおっただけで数千万件の注文データが発生するとなるとエグイ量だなってのが想像できますね
業務データって馬鹿でかくてエグイんだなぁと最近になってちゃんと考えるようになってきました

だから計算量とか云々うるさくみんな言ってるんだな~

それで、そういうバカでかデータを扱うとどうしても処理が遅くなるので、各社色々工夫を凝らしていて、そこにものすごい需要があるみたいです
この辺の処理の高速化ができる人間はどこの会社でも通用するスキルになるんだなぁーというのを直感したので、結構勉強しようという気になっています


性能を上げる方法

性能を上げる一つの方法はコードやクエリの書き方を工夫する方法です
しかしこれらは普通、設計段階で考慮されていたり、DBにおんぶに抱っこしてもらったりできるために、運用後に改修どうこうして改善できる範囲はたかだかしれているらしいです


もう一つはマシンパワーを上げる方法です
まあこれも設計段階で、予算とかの見積もりが出てたりするので、追加予算でOKが出ればみんな幸せになるやつですが、往々にしてそんなにうまくマシンパワー上げてくれる太っ腹な会社もないでしょう(太っ腹なら最初から想定されてそうだし)


なので、一番性能改善で考えていく着眼としては、処理の分割と並列処理っぽいです
ほぼここにすべてが詰まってるようですね

たとえば、コンビニの例だと、一日の売り上げを集計するとき、各店舗で計算させた結果を送らせるとかそういったものでしょう
最初の状態では、一度センターに注文情報を集計してセンターで売り上げとかの情報を計算してたと仮定すると、大幅な計算処理の高速化を実現できそうです


おわりに

高速化は突き詰めると、ボトルネックになっている一括処理の部分を、いい感じの粒度で区切って並列処理させるところにミソがあるっぽいです


よわよわエンジニアのメモ



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