メインコンテンツへスキップ

#470 タ◯スで考える、列指向ストレージ 〜あいつってなんで速いん?〜

2026/6/10 ·

エピソード概要

少し機材の調子が悪く、聞きづらくすみません!

列指向ストレージがなぜ速いのかみなさんはご存知ですか?

是非みなさんなりの具体例もお待ちしてます笑

【本日紹介したもの】

-----------------------------------------------------------------------------------

お便りはこちらにラジオネームをご記入の上お送りください!

[email protected]

質問内容はなんでもOK!

今困っていることや、キャリアについて、これからエンジニアを目指すにあたっての悩みなどどしどしご連絡ください

こちらのGoogleフォームへの回答でもOKです!(

Xで「#ひまじんプログラマー」をつけてツイートしてくれたらめちゃくちゃやる気出ます!

よろしくお願いします!

-----------------------------------------------------------------------------------

オンラインコミュニティ「ひまプロ談話室」のお知らせ

ひまプロ談話室では絶賛メンバー募集中です。

エンジニア友達を探したい!アウトプットの場が欲しい!他のエンジニアから刺激をもらいたい!など、日々のエンジニアリング業務をもっと楽しくしたい方や、もっと成長できる環境が欲しいという方向けのコミュニティです。

以下のフォームからお申し込みできます。

ひまプロ談話室参加申込みフォーム


-----------------------------------------------------------------------------------

Xのフォローもよろしくお願いいたします!

かいち

のり

じゅんぺい

-----------------------------------------------------------------------------------


BGM: MusMus様

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

  • 「ひまじんプログラマー」からお知らせです。6月24日水曜日19時から、東京都汐留にある3Shakeさんのオフィスで、「AI時代、エンジニアの価値はどう変わったのか。ひまプロが語るエンジニアの生存戦略」というイベントに出演します。



  • イベントでは、のりとかいちが登壇するパネルディスカッションに加え、LT会、懇親会を実施します。AI時代のエンジニアの働き方について情報収集したい人や、一緒にワイワイしたい人はCompassでカタカナの「リプラス」と検索してご参加ください。



  • この番組は、エンジニアの成長は楽しい学びからをモットーに、昨日より少し成長できる学びをワイワイお届けするエンタメ系テックラジオです。



  • さあ、今日も頑張っていきましょう。



  • はい。ということで、えーと今日はですね、列指向のデータベース、Redshiftみたいな。



  • Redshiftしか知らない。



  • はい。聞いたことあると思うんですけど。



  • うん。



  • これ僕もそうだったんですけど、ちょっとRedshiftって、あーちょっとのりさんに聞くよりは、まあ言っちゃうか。Redshiftって、まあデータベースなんですけど、よく使うMySQLとかPostgreSQLみたいな、PostgreSQLみたいな。なんかああいうのと使い方が違くてですね、まあいわゆるデータ分析とかに使われるデータベースなんですよ、Redshiftって。



  • おお、ビッグデータってやつですか。



  • ビッグデータ、はい。なので、なんかめっちゃ大量のデータを取り扱えるんですよ。



  • うんうんうん。



  • つまり、なんかたくさんのデータを取り出せると。



  • はい。



  • なんで速いんすよ。



  • え?



  • 速い。



  • なるほど。



  • 読み込みが。



  • ああ、取り出すのが。



  • はい、そうですそうです。



  • はいはいはい。



  • で、ここまではね、まあ僕も知ってましたよ。余裕で。



  • うん。まあまあまあまあ中級エンジニアですから。



  • そうですよ。中級エンジニアですからね。



  • はい。



  • で、ああ列指向は速いんだなというふうに思うわけなんですけど。



  • うんうん。



  • 列指向ってなんで速いんですかと。



  • そりゃね。



  • はい。



  • そういうふうに作ったからじゃないか。



  • 心理。



  • ああ。



  • すごいっすね。なんかその、なんて言うんだろうな、その、そういう特殊料理スキルみたいな。おいしくなーれ作ると、なんかどうやって作ってもおいしいのができるみたいな。



  • そうそうそうそう。だからまあ。



  • 違う違う違う。



  • データベースもね。



  • はい。



  • 速くなーれって作れば。



  • なるほど。



  • なるんじゃないですか。



  • なるほどね。昔よりもね、なんかいろんなデータベースができて、パフォーマンスも上がってると思うんですけど。



  • うん。



  • それは昔の人の思いが足りなかったと。



  • そう。



  • なんてこと言うんだ。



  • そう。



  • っていうので、まあ列指向データベースなんで速いかって説明できないと思うんすよ、これ以上。



  • うん。



  • 列指向だからって。



  • そうっすね。



  • これ合ってるんですけど、足んないんすよ。



  • うん。



  • え? 列指向だから速いっていうのは、必ずしも外れじゃないんすけど、それだけじゃ全然足んないっすと。



  • まあでもいくつか仮説はありますよ。



  • あ、マジっすか。



  • はい。



  • じゃあちょっとのりさんは、のりさんがこのエピソードを楽しく聞くために、一旦仮説出しときましょうか。



  • 仮説いいっすか、まず。



  • どうしようかな。ちょっと待って、超ネタバレ食らっても気まずいな。



  • ネタバレ食らったらもう仮説のところから削除しましょう。



  • 聞かないでおいていいっすか。



  • え、マジで? じゃあちょっとあとで答えたりするか。はい。



  • というので、じゃあちょっとなぜ列指向ストレージは速いのかという話を今日させていただきます。



  • うん。



  • で、これあの実はなんかテーブル構造の話が大事なんじゃなくてですね、列指向によってディスクの読み方が変わるという話なんですよね。ストレージというか。



  • うーん。



  • うまいこと読むから、列指向速いんですよということになります。



  • なるほどね。隣のセクターに入ってるみたいな、すぐ。



  • まあまあまあまあまあまあ。



  • ああまあまあまあ。



  • ハードウェア、ハードディスク的なあれですね。



  • はい。



  • セクターだと。



  • 確かに。そっか。速いならそんなわけないか。



  • まあハードウェアあんま関係ないっす。



  • あ、そうなんだ。



  • はい、関係ないっすね。もちろん多分SSD使ってるでしょうけど。



  • まあそうだよね。



  • はい。まあなので今日は、今日の話聞くと、列指向って列だから速いんだよねって言ってる人が、もう一段深くこうやって、こういう理由で速いんですよというものを、まあロジックというか、なんかそれっぽい説明かつ無理やりな例え話で説明できるようになりますというのが今日のお話です。



  • なるほど。



  • はい。



  • ちなみにそもそも列指向とはみたいなところ大丈夫かな。



  • いやそこですよね。



  • うん。



  • じゃあそもそも列指向とはなんですけど、これはですね、データの読み方、書き込み方が変わります。



  • うん。



  • で、行指向と列指向があります。



  • はい。



  • で、行はね、よく言いますけど横ですよね。表があって、横のやつが行ですね。横っていうのは横1列の、横1列、むず、横、横1線で読み込むのが行指向ですね。



  • だからあれっすね、Excelとかスプレッドシートで言う数字のほうっすよね。



  • どっちがどっちかわかんないけど多分そう。マジか、マジか。



  • うん、多分行だったね数字ね。



  • そう来たか、そう来たか。



  • で、だからMySQLとかも行ですよね。



  • うん。



  • セレクト文で、えーと、中身を取ってくると表がポンポンポンって出てくると思うんですけど、IDがあってその行が1つのデータとして取り扱われる。



  • うんうんうん。



  • だからセレクト文でWERKでいろいろ絞り込むと、1行がポンって出てくる。



  • なるほど。



  • はい。



  • でもカラムを指定することもあると思います。



  • それはカラムを指定してます。



  • ありがとうございます。



  • はい。まあそうですね。



  • わかりました。



  • まあでも読み込みの、読み込み方としては行で読むのが行指向のデータです。



  • はい。



  • で、列指向は列って読みます。縦1文字で読みます。



  • 列。縦1文字。



  • はい。



  • Excelとかスプレッドシートで言うABCとかですか。



  • はい。さっきのりさんから学んだんですけどそうです。



  • そうですよね。



  • はい。っていうのが列指向です。で、ユースケースとしては、これもちょっとあとで話そうと思うんすけど、まあざっくり、普通のアプリ。よくあるWebアプリケーションっていうと、うーん、難しいですね。なんて言えばいいんでしょうね。まあ一般的なWebアプリでは行を使って、データ分析とか大量データを読み込む場合には、列指向を使うことが多いという感じですね。



  • なんでなんや。



  • それはちょっとあとで触れます。



  • わかりました。



  • はい。で、今日はですね、僕が頭の中で考えて考えて、これやと思って持ってきた話ではなくてですね、データ指向アプリケーションデザイン。



  • うんうんうん。



  • 赤いイノシシ本ね。



  • ちょっとツモシン本?



  • ちょっとツモシン本の3章ですね。前回紹介したのが2章、今回3章。



  • おお、1章ずつ。



  • ちょっと面白かった。



  • 刻んでくパターンだ。



  • 面白かったんで。もちろん3章いろんな話あったんですけど、その中で列指向の話が、あ、今まで僕取りこぼしてたなというので、自責の念でエピソードにしてます。



  • おお。今回はよりそのカラム指向、列指向のデータベースの解像度が上がる。



  • そう。



  • わお。



  • そのとおり。



  • ありがてえ。



  • はい。



  • 今度列指向ですね。早速いきますね。なぜ速いか。



  • はい。



  • まあっていう仕組みいろいろあるんですけど、今回とりあえず3つ紹介しようかな。



  • うん。



  • で、1つ目。



  • はい。



  • 1つ目は、これはまあ分かりやすいんですけど、不要な列を読まないから読む量が少なくなって速いですね。



  • うーん。



  • これはね、想像がしやすいと思うんですけど。



  • うんうん。



  • 例えばさっきのデータベースをさっと思い浮かべたときに、ユーザーズっていうテーブルがあって、正規化してるとか置いといて、ユーザーズっぽいのって何があるかなと思うとIDとかネームとか。



  • うんうん。



  • うんうん。



  • Eメールとか。



  • Eメール。



  • とか。ロールとか。



  • ロールとか、フォロースとか。フォロースは計算済みじゃないから。



  • まあとかとかっていう、なんかいろんな情報がユーザーズの中に入ってるわけじゃないですか。で、行指向だとそれを全部読み込みますと。



  • はい。え、全部?



  • 全部読み込む。行、どの列、すべての列読み込む。



  • すべての列? じゃあもうセレクトアスタリスクってことですか。



  • セレクトアスタリスク。まあそうですね。今回列指向でよくやられるのって結局データ分析なんで、期間指定とかあるかもしんないですけど、すっごい大量のデータをドガーッと取ってきて、そのデータを見て全部返すみたいなことをユースケースとしてしたいと考えたときに、余計な列があるとデータ量増えちゃうんで、その余計な列取ってこないから速いですよというのがまず1つ目ですね。これはまあ直感に合ってるのでというか、そりゃそうやなって思うんで。



  • え、待って、余計な列指定取らないっていうのは、さっき全列って言った?



  • あ、全行。



  • 全行って言ったか。



  • はい。



  • 全行か。ああ、じゃあユーザーの例えばもうEメールだけを取るみたいな、なんかそういうことをしてるって。



  • あ、そうですね、列は。列指向はそうです。



  • 感じですね。



  • はい。



  • うんうんうん。



  • まあそうやろうなと。



  • うん。



  • で、これ1つ目で、多分これは名前から想像がつく範囲です。



  • うんうん。



  • で、次からがちょっと僕がなるほどなと思ったところなんですけど、2つ目が圧縮してるんですよ、値を。はい。



  • 圧縮してる。



  • で、これどういうことかというとですね、データベース。思い浮かべたときに、列ごとにものを取ってこようと思って、列をバーッと取ってくるとしましょう。



  • うんうんうん。



  • じゃあ例えばユーザーズで言うと、例えばじゃあ。



  • お住まいの都道府県。



  • あ、住んでる都道府県。めっちゃちょうどいい。



  • うん。



  • 住んでる都道府県取ってこようとしますと。東京とか埼玉、神奈川、千葉、北海道みたいな。バーッと並ぶじゃないですか。



  • はい。



  • うんうんうん。で、これ列って似たような値いっぱい出てくるんですよ。



  • ああ、はいはい。



  • なの。でソートしてると、こっからここまで東京っていうふうに、東京東京東京東京東京の100個の東京を東京100個って圧縮できるんですよ。



  • 確かに。



  • はいはいはい。なので、しかもこのデータ分析で使うデータ量ってもうとんでもないんですよ。数百万。とかデータ取ってくるんですけど、同じ列のデータは同じ型、同じ値が連続して出てくるんで、圧縮して取ることによってとんでもない量のデータをスピーディーに取ることができる。



  • 確かに。



  • っていうので。



  • マジで都道府県だけだったら、都道府県の場合だいたいIDになってそうだけど、1から47までしかないから、100万あろうがもう上限バーンって決まるわけだ。



  • そうそうそうそう。無限にならないというか。ただ一方でこれを行だと他の値もいろいろあるから圧縮できないから、全部丸と持ってこなきゃいけなくなるけど。



  • うんうんうん。



  • 列指向という性質上圧縮できるっていうのが。だから丸と取ってこれる。



  • なるほど。



  • っていうのが2つ目。



  • はい。



  • で、3つ目がCPUの最適化。3つ目がCPUの最適化されて、で、SIMDと呼ばれるシングルインストラクションマルチプルデータって呼ばれる。



  • うわ、出た。



  • これは何かいつだっけな。話しましたよね。CPUアーキテクチャのときだっけな。



  • そうだっけ。なんか俺応用情報とかの記憶があって。



  • あ、でもそこでも出そう。まあこれざっくり言うと、命令1個で複数の値を同時に演算するみたいなものなんですけど、この仕組みを使ってバコッとデータを取ってきてメモリに乗せる。で、メモリに乗せたあとにその中で指定されたクエリをもとにデータをフィルタリングするみたいなときに並列で処理することによって速く処理ができますよみたいな。



  • うん。



  • で、この列指向って必要なデータだけバコッと取ってくるじゃないですか。行指向だと余計なデータが入った状態でメモリに乗っけて、そっからデータを絞ってくみたいな処理をするので、CPUの演算的にもなんて言うんでしょう、連続したものを見るんじゃなくて飛び飛びになってるものを見なきゃいけなくて、オーバーヘッドがあって処理が時間かかるらしいんですよ。



  • うーん。



  • で、列だと連続したやつをバコッとそのままメモリに乗っけて、それで処理できるから、うんうんうん、速えよっていう。



  • なるほどね。



  • で、それ。を並列でSIMDで処理するから速えよっていうことらしいんですよ。



  • はあ、なるほどね。



  • はい。これなるほどねって感じ。



  • それあれかな、キャッシュヒットとかもしやすくなるのかな。



  • キャッシュもそうなのかな。あ、まあキャッシュもそうかもしんないですね。そんなにきれいにクエリが叩かれるのかな。まあでもあるでしょうね。はい。



  • うん。



  • っていうのでこの3つですね。余計なやつ読まなくていいっていうのと、圧縮してるよっていうのと、あとCPU最適化。メモリに乗せて処理するのにすごい相性がいいというところ。



  • うん。



  • これによってパフォーマンスが出るよということになります。で、これですね、私が今理論的な説明をしてきたんですけど、これ一撃で理解する方法があります。



  • まさか。



  • この雰囲気を。



  • この雰囲気を一撃で理解する。



  • この雰囲気を。



  • はい。



  • マジで。



  • これね、ちょっと例えになってるか微妙なんですけど、これですね、例えになってるかわかんないんですけど、タンスで考えるとわかりやすいんですよ。



  • タンス?



  • タンス。



  • タンスによるんじゃないか。



  • いやいやいやいやいや。タンスによらないんですよ。



  • タンスによらない?



  • はい。タンスって、ちょっと僕のタンスの理解。間違えてたら申し訳ないですけど、服入れるやつですね。服入れる。



  • そうだよね。



  • 引き出し。



  • うん。あんまりそこはわかれないと思う。



  • あ、よかった。で、行指向タンス。



  • 行指向タンス。



  • 行指向タンスと列指向タンスがあって。



  • はいはいはい。



  • 行指向タンスはコーディネート一式が1つの引き出しに入ってます。



  • ああ、確かに便利。



  • って開けると、Tシャツと肌着とパンツとボトムスと靴下と靴。まで入ってんのかな。



  • もうマネキンフルセットってことですよね?



  • そうそうそうそうそう。



  • はいはい。



  • で、列指向タンスは1部位だけいっぱい入ってます。



  • はいはいはいはい。



  • 靴下だけみたいな。



  • うん。



  • だから、あ、今日何着ようかなを聞く場合は、行指向タンスバコッて開けると意識入ってて速いんですけど、この家にある靴下の数とか色集計してっていうとめっちゃ大変。



  • 分析してる。分析してるやん。



  • そう。



  • 確かに。



  • めっちゃ大変なんですよ。



  • 確かに。



  • 一方で列指向タンスは、靴下の引き出しバコッて開けたら靴下バーッていっぱい入ってて、で、引き出し開ける人って見たとき、見たあとに数えるのは得意なんで、なんならさっき言ったとおり、靴下って同じ色の靴下は重なった瞬間圧縮されるんで、ギュンって。



  • なるほどね。



  • はい。溢れないしだから。



  • はいはいはい。



  • で、圧縮されるし見ただけで一瞬で何個かあるんで、速えんすよ。



  • それは確かにそうかも。



  • そう。なので、タンスで考えて理解すると、こっからのアーキテクチャならっていうか、なんかどういうふうに使われるとか、めちゃくちゃ理解しやすいかなと思いますし。あと、この。も自分がね、なんで列指向速いのって言われたときに、タンスで考えてみろよって言ってみると、こいつ変だなと思われるんで、ぜひ試してみてください。



  • いや、でもタンスだいぶわかりやすいな。タンスだいぶわかりやすいんだけど、ちょっとまだ列指向のデータベースについて、僕の中で2つ、実際に使ったことない身からすると疑問が残ってるんですよ。



  • はいはい。



  • 1つは、取り出すときどういうインターフェースなのっていう。



  • 取り出すときどうインターフェースなの。はい。



  • 例えばRDBだったらさ、SQLというインターフェースがあるわけじゃないですか。



  • うんうん。



  • こういう行指向ってどうやって使うもんなんだろうと思って。



  • クエリ書くと思いますけどね。



  • うんうん。そうそうそうそう。はい。



  • あ、そうなんだ。



  • でもっと言うと、SQLクライアントも使えるみたいですね。ほぼ同じ文法で書けるんじゃないかな。



  • あれ、ビッグクエリってもしかして実は列指向ですか。



  • ビッグクエリはそうです。はい、列指向です。



  • ああ。



  • そこらへんからちょっとコネクティングドッツミがあるなと思ってるんですけど。



  • え、まじで?



  • まず列指向。



  • え、そうなの?



  • はい。



  • これどこで使われてるかというとですね、データウェアハウスっていうやつで使われてるんですよ。



  • 列指向はデータウェアハウスってやつで使われている。



  • はい。



  • うん。で、データウェアハウスって何かというと、なんか聞いたことあるデータレイクと呼ばれるビッグデータが溜まるところがあって、そこに直接データを取りに行くと、あんまりデータが整理されてなくて連携しづらいので、データウェアハウスというところにデータの形を整えて入れますと。



  • ほう。



  • で、データウェアハウスに入ってるデータを分析することによって、サービスのいろんな傾向とか、そういうのを分析するみたいな流れになります。



  • なるほど。それ系で1個、データマートとかもあるよね。



  • うわあ、データマート聞いたことあるなあ。このへんの3つ、毎回よくわかんなくなるんだよな。



  • 特定の分野用途に必要なものだけを抽出加工して目的で使いやすくしたもの。



  • ってことは、データウェアハウスからさらに細かく切り出したのがデータマートってことか。



  • そうですね。はい。Googleの、Googleがそう言ってますね。



  • うんうんうん。



  • ありがとうございます。追加情報。



  • はい。



  • で、これなんでデータウェアハウスっていうのが出てきたかというとですね、データなんてもうすでにあるわけじゃないですか、アプリって。もうMySQLっていうかRDBMSで貯められてるから、そこのデータ使えばええやんっていうふうに思えるかもしんないんですけど。



  • はい。



  • 現代ではデータウェアハウスと、あとは普通のデータベースで使い方が分かれてますと。



  • うん。



  • これなぜかというと、もちろん負荷がかかっちゃうからなんですね。



  • うーん。



  • 負荷がかかると本来の提供しているサービスに影響が出ちゃうから、じゃあこれを分離することによってでかいクエリ、でっかいデータ読み込みに行っても実際のサービスには影響出ないようにする。



  • はい。



  • っていうので今、データウェアハウスを分けて、データベースと分けて運用する、使うみたいなユースケースになってますと。



  • うん。



  • で、これ用語の紹介なんですけど、行指向的に読み取るやつはOLTPと呼ばれてて、オンライントランクションプロセッシング。



  • うん。



  • これは1件ずつ高速に何かを取りたいみたいなニーズ、ときに発生する。



  • うんうん。



  • まあ普通のアプリのクラッド処理ですね。で、一方でデータ分析系はOLAPと呼ばれるオンラインアナリティカルプロセッシングっていう、何億行とかを集計分析する。月次の売上集計とか購買パターン分析とか。



  • うん。



  • なんかそういうので使われるのOLAPというらしいです。



  • うんうんうんうん。



  • なのでこのデータベースをどういうのを作ればいいかなと考えたときに、もうみんな暗黙的に理解して直感的にやってるところではあるんですけど、OLTP、OLAPのどっちのユースケースに該当するかなっていうのを考えた上で、設計していくというか。



  • はいはい。



  • みたいなことが。必要になるというか、出ますけどね。はい。この2つのワードがありますと。



  • なるほどね。ちょっともう1個の疑問いいんですか。



  • あ、はいはい。



  • これ別にさ、なんだろう、分析するときって複数の軸があると思ってて。



  • はい。



  • 例えばさっきの都道府県の例で言うと、例えば都道府県と性別と年代とかを加味した上で分析したいっすみたいなことって全然あるじゃないですか。



  • はい。



  • そうなったときに、列指向って列でバーって取るから、それをあとから例えば3列分取り出して1個1個のデータをつなげるってなったときに、すさまじい戻し力みたいなのが必要なっていう印象があるんですけど。



  • はいはいはい。



  • そのへんって、それでもやっぱ列のほうが速いぜって感じなのかな。



  • それ、うわあ、マジで正確なとこ知らないんですけど。



  • うん。



  • それでも速いでしょうね。行よりは速いでしょうね。取ってくるものが少ないでしょうから。はい。で、さっき言った圧縮のところどうなる、どういう扱いになるんだろうっていうのがあって。



  • ね。



  • 聞いてみるか。なんとなく、データは1個1個取ってきて。あとでガッチャンコしそうですよね。



  • うん。なんかそんな気はするんだよな。



  • すみません、ちょっとこれは実際に私が使ってるわけじゃなくて、少し正確じゃないかもしんないんですけど、大枠合ってるんじゃないという話をするんですが。まず、列指向で2つを取得してきて。それぞれ。で、その2つの並び順は一緒だから、それをそのままガッチャンコすればOKっていう考え方みたいです。はい。



  • なるほどね。圧縮もイメージちょっと思ってたのより、深いレイヤーでやってんのかな。



  • というよりは、完全に超きれいにソートされてるわけじゃなくて、やっぱり、なんて言うんでしょう、ある程度、もちろん圧縮できるように並べ替えはするけど、なんて言うんだ、ある程度で済ませるっていうんですか、その並び替えは。完全に昇順降順でソートするとかではなくて。



  • うんうん。



  • なんて言うんでしょう、ちょっと次の話にもつながるんですけど、順番がやっぱり完全に書き込み順で保存されるわけじゃないんで、列指向って書き込み弱いんですよ。



  • うんうんうん。



  • はい。



  • 弱そう。



  • これ書き込み弱いので、行指向とはちょっと違う動きしてて。行指向ってインサートしたら1行、インサートしたら1行ポンって入るじゃないですか。一方列指向って。



  • はい。



  • 書き込み方にもよるんですけど、通常1行ポンって入れたらすぐ1行入んないんですよ。



  • うん。



  • どうやってるかっていうと、メモリに何件か、何十件かガーッと貯めて、ちょこちょこちょこちょーってやってズドンって入れるのが列指向の動きなんですよ。



  • へえ。



  • それゆえ。リアルタイムなデータって反映されなくて、それゆえよくあるいつものアプリに向かわないんですよ。でもデータ分析のニーズであれば、そこまでリアルタイムなデータいらないんで、これでいいんですよ。



  • 確かに。



  • うん。で、このちょこちょこちょこちょーっていうふうにやることによって、列指向の、なんて言うんでしょうね、強みを生かしてるわけなんですけど、このちょこちょこちょこちょこちょー、ズドンって入れるのが、いわゆるETL。



  • ああ。エクストラクト、トランスフォーム、L。



  • ロード。



  • ロードなんだ。



  • なんすよ。僕AWSの勉強しててETLっていっぱい出てきて、ああETLって変換して書き込むやつなんだな、ふーんって思ってたんですけど。この書を読んでて、ああ列指向は1行1行っていう言い方でいいのかな、1件1件書き込みするのが得意じゃなくて、で、ある程度バコッとまとめて入れるっていう動きをする必要がある。それ。でやってるのがこのETLって呼ばれるものなんやなっていう。



  • なるほどね。ETL、ちなみにやったことあります?



  • 実際に買ったことはないっすね。データウェアハウスとか構築したことないんで。



  • 僕、副業で1回やったことがあって。



  • ああ。



  • かなり地獄の作業でしたね。



  • え、どういうことっすか。ちょっと地獄を垣間見たいですね。



  • なんか、普段自分が触ってる業務のやつとかだったらまだいいと思うんすよ。



  • うん。



  • 副業でやるってなったら、急にアサインされるじゃないですか。



  • ああ、はいはいはい。



  • ってなったときに、このデータをこういう感じで変換してここに入れるようなクエリ作ってね、みたいな。



  • うんうん。



  • 目的がわかんなすぎて、結構地獄の作業でしたね。



  • ああ、確かに。データだけ渡されて、クエリを考えろってこと?



  • そう。うまくいかなかったときに、目的がわかんないからどうしていいかまったくわかんないっていう。



  • それは、ETL慣れてないのはあるかもしんないけど、ETL。だけじゃないですね、悪いなら。



  • ほかにもある。



  • かもしれないっすね。



  • ほかにもあったか。ああ。でもあれはほんとにね、結構記憶に残るレベルで。



  • へえ。



  • やりたくない作業トップ3に入ってますね。



  • そうなんだ。



  • はい。



  • はい。ちなみにこのETL、タンスに例えれるんすよ。



  • まさか。



  • タンスにね。タンス? 服かもしれない。



  • 正統のお母さん?



  • 正統のお母さんです、そう。これ実はね、我々ETLやってるんですよね。



  • はいはいはいはい。



  • ちょっと我が家、これはちょっとすみません。の収納方法というか、収納チップスというか、衣服の運用チップスなんですけど。



  • うん。



  • うち、服を保存する場所が2か所にあります。



  • 服を保存するってあんま言わないっすけどね。



  • そうっすね。



  • うん。



  • はい。うち。



  • 保管か。



  • 保管、保管ですね。ちょっと。



  • 収納か。収納だな。



  • ETL的に服を収納してるのと、MySQLみたいな感じで服を収納する2パターンあって。



  • へえ。



  • ドラム式洗濯機使ってんすけど。



  • はい。



  • なので、ドラム式洗濯機から洗濯物取り出します。



  • はい。



  • ただ、寝巻きと下着は洗濯機の直上に保存してるので、洗濯機から1件取り出して1件保存してます。



  • BTLだ。



  • そう。パンツと、あ、違う、そっちはETLじゃない。



  • あ、違うの?



  • 1件はもうそのままパンツ取ってそのまま。



  • これインサート?



  • そう。そのまま洗濯機の上のかごにインサートしてます。



  • うん。データレイクだ。



  • データレイクじゃない。MySQL。



  • データレイクじゃないんだ。



  • はい。



  • これはMySQLなんだ。



  • はい。データレイクでもいっか。はい。一方で、普通の服入れる、タンスに入れるとき、洗濯かごをバゴッて持ってバゴッて置いて、洗濯物を全部畳んで畳んで畳んで、で、畳んでまとめて持ってって保存するじゃないですか。



  • はいはい。



  • これ多分普通の家そうだと思うんすよ。畳んでまとめて持ってく。



  • はいはい。



  • これETLっす。



  • これETLなんだ。



  • はい。複数件貯めて、畳むっていう形式にちゃんと変換して、取り出しやすい形にしてバコッと入れる。



  • なるほどね。



  • これETL。僕はパンツは畳まないで、ガッて持ってバッてかごに入れてるんで。そういう意味だと、だから皆さんは普段生活しててETL業務をやっていると。



  • ああ、だから正統にしてるとETLだ。



  • そうっすね。



  • はいはいはい。



  • 正統にしてて複数件同時投入をする。



  • なるほどね。



  • はい。っていうのでちょっと今日タンスのお話しさせていただいたんですけど。



  • タンス、ためになったな。



  • タンス。列指向タンスね。これでちょっとエピソードを聞く前の、列指向タンスってなんで速いのという。



  • 列指向タンスね。



  • はい。



  • うん。



  • すごい。この本って列指向ストレージっていう言い方してるんすよ。



  • うんうんうん。



  • データベースというよりはストレージであるという。



  • うんうんうん。



  • 謎って言ったらちょっとあれだな。哲学があって、哲学というか好みというか流派があって。



  • 確かにカラムドストレージっていうかもしんないな。



  • あ、そうそうそうそうそうそうそう。で、奇しくもタンスってストレージなんで。



  • そうな。



  • 本当。意味で。



  • マジで?



  • え、だってストレージってあれですよね。引き出しというか、物入れ的な意味ですよね。



  • うん。いや、英語でマジでストレージって言ってんのかなと思って。



  • あ、そういうこと?



  • あ、違う。そういうわけじゃない。



  • それはわかんないな。さすがに。



  • さすがにクローゼット?



  • いや、どっちなんだ。タンスってあんのかな、英語。こんなときに順平がいれば。



  • カナダではこう言うよって。



  • さすがに違うんじゃないかな。倉庫とかですもんね、だってね。



  • 倉庫間のイメージあるね。



  • ありますよね。タンスという、タンスのことストレージで、ストレージって言うよっていう珍しい方いたらお便りお願いします。



  • お願いします。



  • はい。



  • でもストレージとは呼ばなそうだな。



  • そうですね。



  • 俺が呼び始めようかな。



  • なんでやねん。誰にも伝わんくらい。はい。っていうので、エピソードを聞く前よりもちょっと一歩解像度上げられたかなと思うので、ぜひ列指向の説明をするときはタンスの例をお話ししながら、なんだこいつと思われながらちょっとお仕事頑張ってみてください。



  • ちなみにChatGPTに聞いたんですけど、タンスを見てThis is storageということはありますが、これは収納だねくらいの意味で、家具名としてのタンスではありません。



  • そりゃそうだわな。よかった。はい。ですよねということで。



  • はい。



  • じゃあ時間もそこそこいったんで締めようと思います。



  • はい。



  • はい。ハッシュタグひまじんプログラマーでSNS、NEXTでフィードバック募集してますので、本日のエピソードの感想。より良い例え、いろいろ何かありましたらぜひお願いします。



  • いや、タンスは超えられないと思うんで、頑張ってください。



  • はい。頑張ってください。次に、エピソードの説明欄からGoogleフォームで番組の要望、感想、質問お待ちしてます。また、エピソードではなくチャンネルの説明欄からSlackオンラインコミュニティ、ひまプロ談話室の参加申し込みフォームございますので、エンジントムラで作りたいよという方いましたらお気軽にご参加お願いします。



  • お願いします。



  • 最後に、各種ポッドキャストプラットフォームのフォロー、高評価もお願いします。



  • 配信の励みになります。



  • はい。それではまた次回。



  • バイバイ。



  • さあ皆さん、次の商品は目玉商品です。こちら、めちゃくちゃでかいエンターキー。



  • うわあ、おっきい。



  • これがあるとストレス発散、生産性アップ、快適な睡眠も。



  • え、枕にしちゃうんですか。



  • こちらの商品はお値段なんと1,024円。



  • わあ、2の10乗。



  • そして今、番組終了1時間以内にGoogleフォームよりお便りを送った方はちっちゃいスペースキーも付いてきます。



  • ポケットに入れて持ち運べますね。



  • 番組の高評価、フォローもすると会員割引なんと90%オフ。



  • え、ほぼタダ。



  • 今すぐご応募を。

0:00 29:25

#470 タ◯スで考える、列指向ストレージ 〜あいつってなんで速いん?〜