DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。
ツイート今日は、第 1 回のSQL アンチパターンの回から良コンテンツを提供しまくりなエンバカデロ・テクノロジーズさん主催の第 3 回 DB エンジニアのための勉強会に参加してきました。 今回は 漢(オトコ)のコンピュータ道で有名な漢の中の漢、 @nippondanji 氏がデータベース設計を徹底指南してくれるということで、元々 DB エンジニアがバックグランドのわたしとしてはいかないわけにはいかんだろう、と喜び勇んでいってきました! 内容はというと下記の概要をカバーする内容でした。 リレーショナルデータベース(以下RDB)は登場してからかなりの時間が経っています。その名が示すように、RDBはリレーショナルモデルをベースに考案されたソフトウェアです。しかしながら、未だに現場ではRDBが使いこなされているとは言いがたく、リレーショナルモデルへの理解も進まず、誤った常識が跋扈しているのが現状で
前回「『データの永続性』に配慮した設計」までに、ドメイン層、パーシステンス層のパターンについて説明してきました。いろいろなパターンがありそれぞれ特徴があります。O-Rマッピングの役割を考えて、実現したいモデルに最適なパターンはどのように組み合わせればよいのでしょうか。今回は、O-Rマッピングの役割と、それを実現するためのドメイン層とパーシステンス層のパターンの組み合わせについて考えてみます。 インピーダンス・ミスマッチングとは? オブジェクト指向で設計を行った場合に一番難しいことは、ドメイン層とパーシステンス層の設計です。 オブジェクト指向分析・設計では、上流工程で分析・設計したモデルの構造(概念モデル)において、継承やポリモーフィズムなどの抽象化を駆使し、できるだけ本質を見極めたシンプルなモデル構造を構築することにより、拡張性・保守性を実現します。そのため、ビジネスロジックの保守性・拡張
ドメイン層とパーシステンス層の組み合わせ ドメイン層のパターンはパーシステンス層のパターンと組み合わせて使用します。どのような組み合わせが考えられるかを見てみましょう。 (1)パターン1 Transaction Scriptは手続き型の処理なので、必要なデータをデータベースからその都度参照・更新することになります。そのため、行レベルかテーブル単位でのデータを扱うのが一番適しています。パターンとしてはTable Data GatewayかRow Data Gatewayが適しています。また、サービス層とドメイン層のサービスプロセスとビジネスロジックは、手続き型の処理を行うために分離が難しくなります。 基本的には、論理テーブル構造をそのままサービス層で利用するようになります。そのため難しいO-Rマッピングは行わず、オブジェクトプールも利用することはありません。 (2)パターン2 Table M
前回の「データベースことはじめ(前編)」では、システムの論理的な階層の中でドメイン層をどの様に実装するかということで、PoEAAのアーキテクチャパターンを元に見てみました。今回は、パーシステンス層のアーキテクチャパターン+αを見ていきます。 まずパーシステンス層を見る前に、今回の話題とは直接ではないですが、間接的に関わってくる層のサービス層に関して少し触れておきたいと思います。サービス層は、ドメイン層配下のビジネスロジックをユーザインタフェース層やアプリケーション層から利用するためのインタフェースとして機能します。一般的にトランザクションロジックやセキュリティロジック、ドメインロジックのワークフロー等のドメインロジックとは直接関係ないロジックを含むのみで、大きなドメインロジックを含むことは好ましくないとされる層です。 では、パーシステンス層です。ここまで、役割的には、データアクセスの実装を
Make a note of it: Web tech, montaineering, and so on. Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。 あるシステムにDB(データベース)を実装しようとする場合、RDBMSにOracleを使うかMySQLにするかPostgreSQLを選択するかってのもあるけど、まず実際どういうDBにするのか設計すると思う。Sig.の場合、設計時のコンセプトは次の2つ。 重複を避ける 求めるデータを「特定できる」ようにする DB設計を厳密に行う手法には「リレーションの正規化」というものがある。これはデータの一貫性を維持し、不整合と冗長性を避け、効率的なアクセスを可能にするための設計手法。単に正規化ともいう。正規化には幾つか段階があるけど、実務の際には第三正規形までに止めて、それで十分とす
去年からほそぼそと作ってきた、EmacsからDBを操作できるツール Emacs DBI を紹介します。 Emacs DBI の簡単な紹介 このツールの目的は、クロスプラットフォームで便利なDB操作環境を実現することです。 pgAdmin や MySQL Query Browser のようなGUIの良さをCUIで実現してみようとしてみました。すなわち、ぼくのかんがえたさいきょうのDBツールです。ちなみに、このツールにとってEmacsはただの実行環境です。Emacs使わない人でも使うと便利だと思います。 データベース画面 e2wmで3ペインの画面 機能概要 以下のような機能があります。 EmacsとDB接続可能なPerlが動けばターミナルでも何処でも動く DB定義、テーブル定義がすぐ見れる auto-complete によるSQL補完 接続先DBにからキーワード、型名、テーブル名、カラム名など
1. 届け先を管理する新設のDBサーバーで、バッチ処理時間が想定の6~7倍と判明 2. 一括ロードツールを使い、メモリー上での処理を活用して1時間以内に収めた 3. SOAサービスの粒度は、カスタマイズの手間を減らすため単純な機能単位にした 「1時間が要件のバッチ処理に当初、6~7時間もかかった。工夫を重ねて、ようやく時間内に収められた」(ヤマトシステム開発 グループソリューションカンパニー 次期NEKOプロジェクト マネージャー 田中諭氏)。 ヤマト運輸が5年ぶりの刷新を進めている基幹システム「第7次NEKOシステム」。住宅に送る「宅配」から、住宅に住む個人の都合に合わせて送る「個配」を目指したものだ。2010年9月には、送り状に記載された届け先の個人名や住所などを登録した「届け先DBサーバー」を新たに稼働させた。これまで送り状に書かれた届け先は、郵便番号など一部の情報しかシステムに登録
This shop will be powered by Are you the store owner? Log in here
Sequel is a lightweight database access toolkit for Ruby. Sequel provides thread safety, connection pooling and a concise DSL for constructing database queries and table schemas. Sequel also includes a lightweight but comprehensive ORM layer for mapping records to Ruby objects and handling associated records. Sequel supports advanced database features such as prepared statements, bound variables,
今回のテーマはデータベースエンジニアの必須知識の1つである「正規化」です。正規化は、リレーショナル・データベースのテーブル設計を行ううえで非常に重要なテクニックであり、データベースを設計、実装したことのある方なら一度は正規化に触れているのではないでしょうか。 それほど基本的な知識であるにもかかわらず、正規化を説明できる人はなかなかいません。多く聞かれるのが「何となくテーブルを作ると自然に第3正規形になる」とか「実務上は第3正規化まで行えば問題ない」というものです。 ではなぜ「第3正規化まで行えば問題ない」のでしょうか。本稿ではひととおり正規化について確認しながら、あまり触れられることのない第3正規化より先の正規化を紹介して、この疑問に答えていきたいと思います。 正規化の位置付け 正規化は、データベース設計全般にかかわる基礎知識ですが、特に論理データモデリングの作業の中で必要になります。本稿
mysqldump クライアントユーティリティは logical backups を実行し、元のデータベースオブジェクト定義およびテーブルデータを再現するために実行できる一連の SQL ステートメントを生成します。 別の SQL サーバーにバックアップまたは転送するために、1 つ以上の MySQL データベースをダンプします。 mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。 複数のスレッド、ファイル圧縮、進捗情報の表示、および Oracle Cloud Infrastructure Object Storage ストリーミングや MySQL データベースサービス 互換性チェックおよび変更などのクラウド機能で並列ダンプを提供する MySQL Shell dump utilities の使用を検討してください。 ダン
用意するもの perl cron sendmail (もしくは sendmail ラッパを持った他の MTA) zip Gmail アカウント jcode.pl mimew.pl 対象者 「用意するもの」に書かれているものの意味が分かる perl スクリプトを作成して実行権限を与える方法が分かる 作成したスクリプトを cron に登録する事が出来る 上記にあてはまらない方は、知識を身につけてから再度お越し下さい。 設置 下記のスクリプトを作成して、パスとかを適宜修正します。 ※cron から動かすためにパスは全てフルパスで。 #!/usr/bin/perl require "/path/to/library/jcode.pl"; require "/path/to/library/mimew.pl"; #### Setting $sendmail = '/usr/sbin/sendmail
大変たいへん興味深い記事。全プログラマーにとって。 HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました ...(snip)... HDDは200スレッドで性能が頭打ちなのに対し、SSDは200スレッドから300スレッドになってもまだ性能は上昇。ただし、300スレッド時にはCPU利用率が100%に近づいており、先にCPU性能の方がボトルネックとなってしまったようです。 HDDをSSDにしたらデータベースはどれだけ速くなるか? オラクルと富士通が実験 - Publickey 動的なスクリプト言語 (Ruby や Python など) と静的なコンパイル型言語 (C++ や Java など) では、だいたい 5 倍から 10 倍ぐらいの速度差がある。それでもスクリ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く