タグ

DBに関するat9100のブックマーク (14)

  • システムの寿命はコードで決まる!(1/3) ― @IT

    コードはシステムの寿命に大きな影響を与えます。今回は、コードとデータベースエンジニアの関係を通してこのことを解説します。ここでいうコードとは、顧客ID、受注伝票番号など、業務上利用されるデータを識別・分類するため、各データの来の名前とは別に割り当てられる記号のことです。 データベースエンジニアにはデータ設計とデータベース設計の2つの役割があります。そして、データベースエンジニアにはデータ設計の一環として安定したコード体系を設計し、データベースをコード体系に依存しないように設計することが求められます。 システムを長く使い続けるためには、 コード体系を長期にわたり変更せず利用できるようにすること コード体系とデータベース設計との結合度を小さくすること が重要です。なぜなら、コードのけたが足りなくなったり、コードの分類が業務にそぐわなくなったりして、コード体系の見直しを行うことになると、業務・

    システムの寿命はコードで決まる!(1/3) ― @IT
  • 【レポート】Developer Summit 2006 - DBは超グローバル変数、どう設計するか (MYCOM PC WEB)

    稿では、2月9日に目黒雅叙園で開催された翔泳社主催のカンファレンス「Developers Summit 2006」から、スターロジック代表取締役兼CEO 羽生章洋氏のセッション「楽々ERDレッスン〜これが楽々DB設計の勘所!〜」の模様をレポートしたい。なお、羽生氏は、Seasarファウンデーションの理事を務めるなど、オープンソースソフトウェア開発コミュニティでも活躍中である。 さて、システム開発の現場において、データベースの設計は特に重要視されることが多い。では何故DB設計が重要なのか、という問いに対し、羽生氏は「DBはアプリケーションをまたがる『超グローバル変数』だから」だと語る。個別のプログラムにおいてさえグローバル変数の使用には注意が必要なのだから、時として複数のシステムに影響を及ぼすデータベースの設計に最大限の注意が必要なのは当然、というわけだ。データベースの設計がいい加減だと、

    at9100
    at9100 2006/02/15
    >残念ながらここで詳細は書かない
  • 月に遊ぶ » SQLiteの使いかた

  • 基礎から理解するデータベースのしくみ(9)

    図10●レコード・クラスタリングの仕組み。ハッシュ値にしたがって,empとemp_histの二つのテーブルで同じenoを持つレコードを一つのテーブルに格納している RDBMSが備えるさまざまな高速化手法 RDBMSは,ここまで説明してきた基的なデータの格納のしかたや操作方法に加え,高速化のための手法をいろいろ用意しています。Part2の最後に,これらの手法をざっと紹介しておきましょう。 ●ハッシュ・インデックス キャッシュ・バッファのサイズや使われ方にもよりますが,一般にBツリー・インデックスを使って巨大なデータベースにアクセスする際には,ルート・ノードだけがキャッシュ・バッファにあるのが普通です。そのため,レコードにたどりつくまでにブランチ・ノード,リーフ・ノード,データベース・レコードと何回もディスクにアクセスしなければなりません。これを1回のアクセスでレコードを取得できるようにしよ

    基礎から理解するデータベースのしくみ(9)
    at9100
    at9100 2006/01/27
  • 基礎から理解するデータベースのしくみ(8)

    インデックスで検索を高速にする ここまでの説明でおわかりのように,一般にテーブル内のレコードがディスク上に格納される順序は,レコードを追加する順序やページに空きがあるかどうかなどに左右され,特定のキーの順番に並んでいるわけではありません。そのため例えば,従業員テーブル(emp)から従業員番号(eno)が71であるレコードを抽出するSQL文である SELECT * FROM emp WHERE eno = 71 のような単純な検索処理でも,テーブル内のすべてのレコードを一つずつ調べていかなくてはなりません。これではレコード数が膨大な場合に大変な時間がかかってしまいます。そこで,こうした特定のキーに対する検索を高速化するために用意されている仕組みがインデックス(索引)です。 インデックスの基的な考え方は,書籍の索引と同じです。例えば,書籍の中から「テーブル」というキーワードを検索する場合,あ

    基礎から理解するデータベースのしくみ(8)
    at9100
    at9100 2006/01/26
  • 基礎から理解するデータベースのしくみ(6)

    データベースのインデックス*1の作成やパラメータの設定は,システムのパフォーマンスを大きく左右します。加えて,メンテナンスの手間にも影響します。「面倒な設定作業はほとんどツールに任せている」なんていう人もいるかもしれませんが,こうした作業をきちんとやることは実用的なシステムを作るには避けて通れません。では,最適なインデックス作成やパラメータ設定ができるようになるにはどうすればよいのでしょうか。 Part2では,リレーショナル・データベース管理システム(RDBMS)がデータをディスクに格納するやり方やアクセス方法について解説します。さらに,高速な検索が可能なBツリー・インデックスやハッシュ・インデックスのしくみなどを学んでいきましょう。 データベースには3種類のファイルがある 最初に,データベースを構成するファイルについて簡単に触れておきましょう。データベースは大きく分けて,「データ・ファイ

    基礎から理解するデータベースのしくみ(6)
    at9100
    at9100 2006/01/24
  • 基礎から理解するデータベースのしくみ(5):ITpro

    SQL文を実行する際のパフォーマンスに大きな影響を及ぼすものとして,もう一つ,インデックスがあります。インデックスについては,どう定義すべきかというデータベース設計上の問題と,インデックスを有効に使うためのSQL文をどう書くべきかというコーディング上の問題があります。 ここではテーブル設計上の問題を主に取り上げます。SQL文のコーディングについては囲み記事「SQL文を最速にする11のポイント」を参照してください。 インデックスは,テーブルの検索速度を向上させるためのものです。それぞれのSQL文に対して最適なインデックスを定義するのが理想的ですが,実際にはある程度限られたインデックスで,必要なパフォーマンス要件を満たすようにインデックスを定義する必要があります。加えて,どんなSQL文が実際に発行されるのかがあらかじめわかっていない場合は,適当な想定に基づいてインデックスを定義しておかなくては

    基礎から理解するデータベースのしくみ(5):ITpro
    at9100
    at9100 2006/01/23
  • Microsoft – クラウド、コンピューター、アプリ & ゲーム

    Surface Laptop Go 2 充実した機能とカラーを展開したノートブック型 Surface の最軽量モデル。Microsoft Office と Windows 11 搭載で 96,580 円から。

  • [ThinkIT] 第1回:SQLインジェクションによるデータベース操作 (1/3)

    SQLインジェクションでは、クエリなどの任意データを、データベースが実行するSQL文に挿入します。挿入されたクエリは、意図しないデータを検索したり、データベースの情報を変更したり削除したりするというように、様々な操作をデータベースに行います。問題を実証するために次の例を見てみましょう。 // 問題を実証するための入力 $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 上記の関数内では、ユーザが指定した名前とnameカラムの値が一致したデータをusersテーブルから取り出すことを想定しています。普通、$nameには、iliaといった文字列のように、アルファベットとスペースからできた文字列が格納されています。 しかしここでは、$nameにまったく新しいクエリ

  • 基礎から理解するデータベースのしくみ(3)

    図3●Oracle付属のSQL*Plusで実行計画を表示したところ。画面下部のインデントは図2のツリーの親子関係を表します 効率の良い実行計画を作成する 次は,実行計画の作成です。こちらも例を挙げて説明したほうがわかりやすいでしょう。Oracleに付属するサンプルの従業員テーブル(emp)と部署テーブル(dept)から,従業員の一覧を取り出す以下のようなSQL文を実行するとします。 SELECT ename, job, sal, dname FROM emp, dept WHERE emp.deptno = dept.deptno テーブルdeptでは部署番号deptnoが主キーで,インデックスpk_deptnoが定義されています。一方テーブルempでは,deptnoが外部キー*5になりますが,これに対してインデックスは定義されていません。 オプティマイザは,このSQL文に対して(図2[拡

    基礎から理解するデータベースのしくみ(3)
    at9100
    at9100 2006/01/19
  • 基礎から理解するデータベースのしくみ(2)

    図1●リレーショナル・データベース管理システム(RDBMS)が,受け取ったSQL文を実行するまでの処理の流れ SQL文を記述してデータベースを操作することはそれほど難しいことではありません。しかし,リレーショナル・データベース管理システム(RDBMS)が問い合わせを実行する速度は,SQL文の書き方によって大きく異なります。ちょっとした記述の違いによって,応答時間が何倍も違うことはめずらしくありません。 では,速いSQL文を書けるようになるためには,どうすればいいのでしょうか。その答えは,「RDBMSSQL文を内部でどのように処理しているのか」を理解することです。RDBMSは,プログラマが記述したSQL文を基にさまざまな処理を行ってから実際にデータベースにアクセスします。その過程を知ることで,アクセスのしかたをコントロールできるようになるのです。 例えば,CUSTOMERS(顧客)テーブル

    基礎から理解するデータベースのしくみ(2)
    at9100
    at9100 2006/01/18
  • 基礎から理解するデータベースのしくみ(1)

    「データベースはブラックボックス。どんなSQL文を投げたらどんな結果が返ってくるかさえ知っていればよい」---そう思っている人も多いかもしれません。確かに,最近の市販のリレーショナル・データベース管理システム(RDBMS)にはGUIベースの管理ツールなどが付属し,データベースそのものについての深い知識が求められることは昔に比べれば少なくなりました。メモリーやディスクなどのハードウエア・リソースが増えて,開発者のスキル不足が表面化しにくくなったこともあるでしょう。 しかし,物のソフトウエア・エンジニアを目指すのであれば,データベースが動く仕組みを学ぶことは避けて通れません。「SQL文を受け取ってから結果を返すまでにRDBMSがどんな処理をしているのか」「データ・ファイルの物理構造はどうなっているのか」「インデックスはどのように格納されているのか」——。こうした知識がないと,パフォーマンスな

    基礎から理解するデータベースのしくみ(1)
    at9100
    at9100 2006/01/17
  • https://atmarkit.itmedia.co.jp/ait/subtop/features/da/dt_adonet_index.html

  • 自分が担当しているウェブサイトで、テーブルが非常に多くなってきておりER図の更新がエライことになってきて、困っています。…

    自分が担当しているウェブサイトで、テーブルが非常に多くなってきておりER図の更新がエライことになってきて、困っています。テーブル(エンティティ)が増えすぎた場合でも、なるべくコンパクトにER図(あるいはER図的なもの)を作成するよい方法・アイデアがあれば教えてください。

  • 1