Microsoft TechEd Yokohama 2007 総括(4) SQL Server 2008 編 BearCatのモバイルと音楽のある生活

Microsoft TechEd Yokohama 2007 総括(4) SQL Server 2008 編のページです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--年--月--日 トラックバック(-) コメント(-)

Microsoft TechEd Yokohama 2007 総括(4) SQL Server 2008 編

Microsoft Tech・Ed Yokohama 2007

今や、データベースを使わない業務アプリケーションは考えられません。
そういえば、私が携わったプロジェクトで、ここ10年でデータベースを使わない案件を数えてみると、たった1件しか思いつきません。

また、ここ10年の Microsoft サーバ製品の中で、最も進歩が著しかった製品のひとつが SQL Server だと思います。

10年ほど前になるかと思いますが、SQL Server 6.5 の性能検証で思いっきり負荷をかけたところ、データベースファイルがぶっ壊れて二度と復旧することができないという憂き目にあいました。
名誉のためにいっておくと、その後発売された SQL Server 7.0 では思いっきり負荷をかけても遅くなりはしますが、データベースファイルがぶっ壊れることはありませんでした。
SQL Server とはそれ以来の付き合いになっています。

さて、その SQL Server の最新版、SQL Server 2008 です。
SQL Server 2005 から 3年でコアを一新するとは思えません。たぶん、コアは SQL Server 2005 をベースにしているものと思われます。
SQL Server 2005 で実装されたパーティション テーブルや、データベース ミラーリングのように派手な機能追加はありませんが、開発者から見ると嬉しい機能追加がいろいろあります。

なお、以下 SQL Server 2008 は『2008』、SQL Server 2005 は『2005』と記載しています。

■パーティション テーブルのパフォーマンス改善

2005 から追加されたパーティション テーブル、2005 では複数パーティションにまたがる検索では、1パーティションあたり1スレッドでしかスキャンしなかったそうです(実は知らなかった...勉強不足でした)。

2008 では、複数パーティションにまたがる検索でも、1パーティションに対しマルチスレッドでスキャンできるとのこと。
...嬉しいけど、そんなもの最初からできるようにしとけよ。

■ポリシーベースの管理フレームワーク

システム設定がポリシーに従うことを強制したり監視する機能が追加されるそうです。
例えば、テーブルのネーミングルールとか、データベース作成時のパラメータとかですね。
これで、管理者作業が削減できるというのですが...
実際にテーブルを作る段階になってネーミングルールに違反しているとか、データベースを作る段階で増分の設定が違うって状況。それはすでにデータベース設計が破綻しています。
保険のようなものだと思って使いましょう。

余談ですが、データベースの物理設計をすっとばして構築した業務システムを見たことがあります。
master も tempdb も データ ファイルもトランザクション ログ ファイル も全部 C ドライブ。
データ ファイル サイズも自動拡張も全てデフォルトのまま設定したとのこと。
とどめは C ドライブが RAID 5 ...
「パフォーマンスがでないんだよ~」と泣き言を聞いた時は、悪い冗談としか思えませんでした。
そりゃあお前のせいだよ。

■データ暗号化

データベース レベルでの暗号化がサポートされます。
“データベース レベル”ということは、データも統計情報もインデックスもログも、ともかくデータベースに含まれるもの全てが暗号化されるということです。
しかも、呼び出すアプリケーションからは暗号化を一切意識せずに利用できます。

暗号化を考えているなら、敢えて 2005 からバージョンアップするメリットになるでしょう。
どの程度パフォーマンスが低下するかも情報がほしいところです。

■リソース管理

Windows Server 2008 で書き忘れたのですが、Windows System Resource Manager という機能により、プロセスに対してのリソース(CPU、メモリ等)の割り当てを動的に変更できるようになるそうです。
SQL Server 2008 でも同様の機能『Resource Governor』が実装されます。ただし、割り当て対象はプロセスではなく、ワークロードと呼ばれるグループ単位となります。
ワークロード自体は、ユーザ定義関数を使ってホスト名やアプリケーション名、ユーザ名等から識別されます。

Webアプリケーション側の処理を最優先にし、バッチ処理を緩やかに行うといった制御ができるようになります。

設計担当者も管理担当者も、導入時の作業が増えることは覚悟しておきましょう。それだけのメリットはあります。

それにしても、ネーミングルールに一貫性がないですね。
Resource Manager と Resource Governor って、どっちかに統一すればいいのに。

■データ圧縮

固定長データ型を可変長列として格納したり、列ごとに重複しているプレフィクス部分を圧縮することにより、データ サイズを縮小できるそうです。
全表操作などでパフォーマンスの向上も期待できるそうですが、ストレージ コストが劇的に下がっている今の状況では、利用する局面は限定的でしょう。
少なくとも、私は一生使うことがなさそうです。

■T-SQL の拡張 - MERGE ステートメント

T-SQL 文を書いていて、いつも腹立たしく思うのが、あるかないか判らないデータの更新です。
製品が入庫した際、入庫トランザクション テーブル(以下、入庫トラン)の数量を在庫テーブルに追加するというケースを想定します。
その場合、以下の2つのステップが必要です。
1.入庫トランの製品ID が在庫トランの製品IDに存在しない場合
  入庫トランの在庫IDと入庫数量を在庫トランに追加
2.入庫トランの製品ID が在庫トランの製品IDに存在する場合
  入庫トランの入庫数量で在庫トランの在庫数量を更新
NOT EXISTS句 とか IN句を使ったやや面倒くさい副問い合わせを使う必要があり、また、トランザクションも必須です。

2008 で追加される MERGE ステートメントを利用すれば、上記処理を 1 ステップで記述できます。

MERGE 在庫テーブル Z
  USING 入庫トラン N
  ON Z.在庫ID = N.在庫ID
  WHEN MATCHED THEN
    UPDATE SET 在庫数量 += 入庫数量
  WHEN NOT MATCHED THEN
    INSERT VALUES(製品ID,入庫数量)

ORACLE では 9i から実装されていますので、やや遅れての機能追加ですが、とっても役に立つので良しとしましょう。

■T-SQL の拡張 - INSERT over DML

セッション資料には、『DML ステートメント OUTOPUT句のINTO<table>部分にあたる動作を INSERT ステートメントで実現』という、日本語としてはどうかと思う説明で書かれていましたが、要するにデータ操作内容を別のテーブルに追加できるという機能です。
更新前レコードを履歴データに追加するような処理を想定しているそうですが、私は処理が局所化できるので、トリガの方が好き。
なので、詳細は書きません。


SQL Server 2008、ちまちまと魅力的な機能が追加されており、正直とっても期待しています。
スポンサーサイト

2007年08月29日 トラックバック(1) コメント(2)

まいど!、来ちゃいました!。^^
なにげに、難しいお話が。。。
さすがは!SE!!。

また、どこかで飛べる日が来たら
いいなぁ~
ほえほえ~!。

2007年08月29日 くしなだひめ URL 編集

おひさ~
全然、FS に関係ない話題になっていますが、そのうちまた空でお会いしましょう

2007年09月02日 BearCat URL 編集












管理者にだけ公開する

トラックバックURL
http://ailurusfulgens.blog113.fc2.com/tb.php/64-323110cb

オラクルマスター教科書 Bronze Oracle Dat

各章説明の後に問題がある、という構成なので、何も知らない状態から始めても章末問題で「いかにわかっていないか」がわかるようになっている。復習しながら最終章を迎えると最後に模擬問題があるので、実戦さながらのボリュームでの演習ができる。(私が購入したし初版1刷

2007年09月27日 データベースの感想

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。