1. “データベース”を使わない世界#

データベースと聞いて何を思い浮かべるだろうか. 大抵の人は,データベースといえば「大きなデータの集まり」を思い浮かべる. このイメージはあながち間違いではないのだが,本講義のようにわざわざ科目を立ててまで,データベースについて学ぶことはあるのだろうか?

結論としては,大規模データに携わるITエンジニアやデータ分析者を目指す人であれば「大いにあり」である. 1960年代から今日に至るまで,データベース技術は盛んに研究開発されてきた. 大きなデータの集まりを扱おうとすると,対処しなければならない問題がたくさんある.

本講義では10数回にわたってデータベース技術について解説するが,この第1講ではデータベースのことはいったん横に置いておいておく. 今回は(割と)大きなデータを扱うときに遭遇する問題について考えてみよう.

1.1. ケース1: 販売履歴の記録をはじめる#

以下は,山畑さんという架空の人物のお話である.

山畑さんは家族で小さな小売店を営んでいる. 個人経営ながら山畑さんのお店は繁盛している. とはいえ,街には大手チェーン小売店が進出してきており,このまま順調に経営を続けられるかは不安だ. 何か手を打たなければならない.

2020年の4月,山畑さんは念願のショッピングサイトを立ち上げた. 言うまでもない.ショッピングサイトを立ち上げたのは,オンラインにも顧客獲得の機会を求めるためだ. サイトは順調に立ち上がり,注文もポツポツ入ってきている.

ところで,最近世の中では「データサイエンス」なるものが注目を集めているらしい. データを活かせばビジネスチャンスが広がる,とのことだ. 山畑さんは,Excelシートに入力しつつあった販売履歴を分析してみようと思い立った.

山畑さんが使っているExcelシートには,いつ,誰が,何を,いくらで購入したかの情報が記録されている. ショッピングサイトは立ち上がったばかりであるため,Excelシートには200行しかデータが入っていないが,これからデータが貯まっていけば,売り上げを増やすための課題が見えるかもしれない. いずれがっつりとデータ分析をやるためにも,山畑さんは手持ちのデータで分析の練習をしてみることにした.

1.1.1. 演習#

1.1.1.1. データの確認#

コチラをクリックして,上のケース1で山畑さんが使っていたExcelファイル(purchase_small.xlsx)をダウンロードし,中身を確認せよ.

なお,Excelシートの各列の意味は以下の通り:

  • purchased_at: 購買(販売)日時

  • customer: 商品を購入した人物の氏名

  • gender: 商品を購入した人物の性別

  • product: 購入された商品名

  • sale: 販売価格

1.1.1.2. あの人は何回買い物をしている?#

「岡田 真綾」という人物が何回買い物をしていたかを数えよ.

1.1.1.3. 商品Xを購入しているのは誰?#

Excelのオートフィルタ機能を使って,「ビタミン補助剤」を購入している人をリストアップせよ. オートフィルタの使い方については,コチラのリンク先を参照すること.

1.1.1.4. 総売上金額#

Excel関数のSUMを用いて,現時点での総売上金額を計算せよ. SUM関数の使い方については,コチラのリンク先を参照すること.

1.1.1.5. 最も売れた商品は?#

Excelのピボットテーブル機能を使って,集計期間中に

  • 最も購買回数が多かった商品

  • 最も売上金額の合計が大きかった商品

のそれぞれを求めよ. ピボットテーブル機能の使い方については,コチラのリンク先を参照すること.

1.2. ケース2: 認知度向上につき,得られるデータも膨大に!?#

現時点では手持ちのデータは少ないが,販売履歴データの分析に将来性を感じた山畑さん. 販売履歴データが活用できるよう,ショッピングサイト運営により力を入れようと決意したのであった.

以下は,山畑さんのその後の話(架空の話)である.

ショッピングサイト立ち上げ以降,順調に利用者数も増えていった. やはりメディアに取り上げられたのが大きかったのだろう. あのタイミングで認知度が一気に上がり,サイト利用頻度も加速度的に増えていった. それに伴い,サイト運営に関わるスタッフも増員した.

販売履歴の管理は当初山畑さんが一人で担当していたが,さすがに一人では捌ききれなくなった. そこで,ある時点から数名体制で販売履歴の記録をすることになった. これまで販売履歴の管理に使ってきたExcelシートをクラウドストレージに置き, 販売履歴記録のスタッフのPC間で同期を取るようにした. 同じExcelファイルの上で記録をつけられるようにしたのである.

2年後.サイト事業も軌道に乗った. 十分に販売履歴データが蓄積されたと判断した山畑さんは,いよいよ大規模に販売履歴データを分析しようと思った. 立ち上げ当初は200-300行しかなかったExcelシートであったが,シートを開き行数を数えてみると… なんとその数90万行以上! データの数に小躍りした山畑さんは,早速Excelシートでの分析に詳しいスタッフと一緒にデータ分析に取りかかったのであった.

1.2.1. 演習2#

コチラをクリックして,上のケース2で山畑さんが分析しようとしているExcelファイルpurchase_large.xlsxをダウンロードせよ. またダウンロードしたファイルを用いて下記課題(演習1と同じ)に取り組み,データ分析上の課題(困ったこと)を議論せよ. もし,purchase_large.xlsxファイルがうまく開けない場合は,コチラからダウンロードできるpurchase_medium.xlsxを用いよ. なお,ダウンロードできるExcelシートの構造はケース1で用いたpurchase_small.xlsxと同じである.

  • 「岡田 真綾」という人物が何回買い物をしていたかを数えよ

  • 「ビタミン補助剤」を購入している人をリストアップせよ

  • 総売上金額を計算せよ

  • 集計期間中に「最も購買回数が多かった商品」「最も売上金額の合計が大きかった商品」を求めよ


1.3. おわりに#

ケース1および2で用いたExcelファイルは販売履歴データの集まりであった. 一般的な認識からすると「データベース」ということになるだろう.

ところで,上記演習(特にケース2)に取り組んでみてイライラしなかっただろうか? 数万件,数十万件ある表データをExcelで扱おうとすると,色々な不都合が生じる. これは,Excelが個人用の表計算アプリケーションであって,大規模データの管理や処理を想定していないからである. では,大規模なデータを管理・処理するためにはどうすればよいだろうか? そのための技術こそが「データベース」である.

以降,本講義では大規模データを効率よく管理・処理するための「データベース」技術 について学習する.