SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド

分析・集計に適したデータベースの最適な物理レイアウトを考える

オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド 第6回

  • このエントリーをはてなブックマークに追加

 この連載では、開発者の皆様がシステム・アーキテクチャやアプリケーション・コードをより洗練させるのに役立つデータベース・マネジメント・システム(DBMS)の基本を振り返り、実装に合った技術の組み合わせを解説します。今回は、データへのアクセスの性質に最適化した物理レイアウトとそのトレード・オフについて扱います。

  • このエントリーをはてなブックマークに追加

はじめに

 今回はストレージやメモリー内に格納されるデータの物理レイアウトの最適化について説明します。データベースに格納されるデータは論理的には多次元の構造を持っていますが、ストレージやメモリーのアドレスは1次元であらわされるため内部的には1次元に畳み込まれて格納されます。オンライン・トランザクション処理と分析・集計処理はデータへのアクセスの性質が異なるため、それぞれに適したデータの物理レイアウトがあります。これらを両立させる方法はあるのでしょうか。もし両立させる方法があれば、オンライン・トランザクション処理用データベースから分析・集計処理用データベースに大量のデータを移動させないという設計の選択肢ができます。

 なお、本連載で例として挙げるデータベースはオラクルが提供しているものが多いですが、オラクル製品を使っていない方にも参考にしていただけるように解説していきます。

対象読者

 この連載では以下の読者を想定しています。

  • データ資産を活用する、新しいアプリケーションの構想や設計を担われる方
  • データ基盤の運用を担われている方や、今後検討される方
  • 新たに開発するアプリケーションの、最適なデータベースをお探しの方
  • 目的別データベースから、価値ある情報を素早く引き出す検討をされている方

データへのアクセスの性質

 一般的に、データベースのデータ構造はリレーショナル表やJSONのように多次元や入れ子の構造を持っており、クエリー言語は1次元のアドレス指定ではデータにアクセスしません。しかしストレージやメモリーのアドレスは1次元であらわされるため、クエリー言語によるデータへのアクセスは内部的には物理格納領域の1次元のアドレスを飛び飛びでアクセスすることになります。

 まず、オンライン・トランザクション処理と分析・集計処理のデータへのアクセスの性質を見ていきましょう。

 オンライン・トランザクション処理は商品の注文など1つの処理で少数の行の多数の列をINSERTやSELECTする傾向があります。1行のデータをまとめて取得するため行指向のアクセス・パターンになります。

 これに対し分析・集計処理は金額列の合計などを計算するため、多数の行の少数の列をSELECTする傾向があります。1列のデータをまとめて取得するため列指向のアクセス・パターンになります。

データへのアクセスの性質
データへのアクセスの性質

データの物理レイアウト

 ストレージやメモリーのアドレスは1次元であらわされますが、データベースのデータ構造は多次元になっています。多次元のデータを1次元のストレージやメモリーに格納するには、どの次元を連続配置するかによってアクセス時間が変わってきます。

 一般的に、複数の要素を取得する場合は物理格納領域に連続して配置されている方がアクセス時間は短くなるため、行指向アクセスと列指向アクセスで最適な物理レイアウトは異なるものになります。行指向アクセスに適しているのは1行を連続配置する行指向レイアウトであり、列指向アクセスに適しているのは1列を連続配置する列指向レイアウトです。アクセス・パターンと物理レイアウトが合致していないと、ストレージやメモリーのアドレスを飛び飛びにアクセスすることになります。

データの物理レイアウト
データの物理レイアウト

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
データベース・アーキテクチャと用途

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド連載記事一覧

もっと読む

この記事の著者

日下部 明(日本オラクル株式会社)(クサカベ アキラ)

 日本オラクル株式会社でOracle Databaseを担当するエンジニア。主にOracle Real Application Clustersを中心とする高可用性構成や性能チューニングの問題解決およびコンサルティングに従事。著書に「これは使えるOracle新機能活用術」(翔泳社)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15552 2022/02/16 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング