Materialized Viewに対する一意制約


ん〜、なんだか久々にはてなに書く気がする。。。
たまたまMView関連で検索してたら、ちょっと気になったというか、
教えてあげたい気分になってしまったので、トラバを送ってみるてすつ。


ま〜、教えてあげたいっつうのも、お前何様なんだって感じですが・・・
さらにいえば、5か月近く前の投稿にってのもかなりアレな感じですが・・・(・ε・)キニシナイ!!

高速リフレッシュをかけるmaterialized viewには、一意キーは使えない!!!
なので、キーをnone nunique key にするか、完全リフレッシュに変更する。
(というか、追加→修正or削除→追加みたいな処理をしたときにうまくいかない
ときがある:高速リフレッシュはログが時系列に反映されるのを保証しないため)


これ、確かに普通に一意制約つけちゃうと、たま〜にこけるんだけど、ちゃんと回避策があります。
無論完全リフレッシュにするなどという、全てを台無しにする方法でなく。


方法は至って簡単で、
一意制約をつける時に、遅延制約つけるだけ。


たとえば・・・


ALTER TABLE HOGE ADD COSNTRAINT PK_HOGE PRIMARY KEY(ID) DEFERRABLE;


こうやってPKを作成するだけでふ。


すると、USER_INDEXESとかでもみると、NONUNIQUEになっちゃいますが、
実際にはちゃんとUNIQUEになっていて、ちゃんと重複キーをINSERTしようもんなら怒られますです。
基本的においらがMV作る時は全部遅延制約で定義しますね。


ま、久々の投稿でリハビリってなわけで、今日はこの辺で(ぉ

あけましておめでとうございます

こんにちわ、はるきです。


年末年始はずっと奥様の実家に帰省して、ひたすら働いておりました(笑
うちの奥様の実家は、神社さんなので、一年で最も忙しい時期なのですね・・・^^;
ずっと正座してお札やらお守りやらをお売りしてましたとさ><
おかげで、下半身がズタボロです・・・


ちなみにおみくじは末吉だったのですが、
そこに書いてある文面を読むと、
坂道を自動車が進むようならく〜な一年になりますとか書いてあって、
んじゃ大吉とかなるとどうなっちゃうのさ!なんて思ったりしましたw


というわけで、今年、2009年が良い年になりますようにっ★

OSS BIツールを触ってみる

早速Diaryを書かなくなってしまったはるきです、こんにちわ(ぉぃ


というわけで、この二週間でOSSのBIツールを触ってみていたので、そのメモをc⌒っ゚д゚)っφ メモメモ... 一応大前提としてあるのは調査期間二週間、目的はサクッとBIを構築できるツールを選定する事。

OpenOLAP

まずは日本製OLAPツールであるOpenOLAPをさわってみました。 今回BIというカテゴリーで調査をしていたわけですが、触ってみた感触としては、全く純粋なOLAPツールという感じですね。 これをBIだ!と言ってしまうのは少々おこがましい気がします・・・。 で・・・このOpenOLAPかなり怪しいのです・・・ 2004年頃にプロジェクト始動しているわけですが、2006年にVersion2.1をリリースして以降全く音沙汰無し・・・ しかもフォーラム見てみると凄く楽しい展開が>< そしてそして開発した会社のHPを見てみると、コピーライトが2006><


まぁ、そんな事はおいといて、実際にOpenOLAPを入れて動かしてみると・・・バグ、バグ、バグのオンパレード・・・こりゃひで〜! と思って色々と調べてみると、NRIMySQL版(動かしてみたのはPostgreSQL版)を出しているとの事なので、そちらを試してみる事に。


んが・・・こちらも一回Version1.0を出したのみで、その後の動きは一切なく、早くも怪しい空気が漂う・・・しかもプロジェクト名が個人名だし・・・。 実際使ってみてもいくつかバグを発見したところでかなりげんなり。 んで、もうちょいと調べてみると、NRIOSSを色々集めてひっくるめてOpenStandiaとして提供しているパッケージの中にOpenOLAPが存在している事を発見し、どうやらこれはメンテナンスされてる様子なので、こちらを試してみる事にしてMySQL版の検証は終了。


このOpenStandiaに含まれているOpenOLAPはまぁまぁ普通には動く感じ。 若干バグはあるものの、これくらいなら直す気が起こるというレベルだったので、ちょこちょこと改修しながら動くレベルまでにはなった感じ。 動かしてみての感想としては、BIツールとしてみるとかなり厳しいけれど、OLAPを簡単に実装するなら良いかな?という感じでしょうか。 機能的には以下のような感じ。

  • メタデータ作成
  • キューブ/ディメンションなどの作成
  • OLAP

BIとして必要となってくる、ETL機能やレポーティング機能、データマイニングなどといった機能は存在していない。 ETL機能についてはOpenStagingという、OpenOLAPの初期開発会社が作成したツールがあるので、それで補完可能か。 もしくは、初期開発会社からは綺麗サッパリ離れて、他のOSSを活用する方が良いのかもしれない。 レポーティング機能に関しては気持ち付いているものの、はっきりいって業務では使い物にならないと思うので、ある程度の帳票を求められる状況では、なんらかのレポーティングツールを使って作っていく必要がある感じ。 データマイニングに至ってはどうしようもなくって、データマイニングができないと!なんて言われた日には、作り込むか他のOSSに乗り換えるかしないといけない感じでした。


まぁ、上記はおいら個人の感想なので、実際に触ってみるのが良いと思いますね、やっぱり。 インストールしてサンプルデータで動くようになるまできっと一時間位だと思いますので。 (但しデフォルトのソースでキューブ作成しようとすると、メッチャ遅いかもしれません・・・) 一応今回触った物のダウンロードは以下リンクから〜

  • OpenOLAP
  • OpenOLAP for MySQL
  • OpenOLAP(OpenStandia)
    • これ普通にDLしようとすると、NRIのOpenStandiaをDLしてなんやらいらないものまで色々とインストールされてしまうので、これを直接落としてしまうのが良いと思います。
    • 一応インストール手順書的なものが付属しているのですが、OpenStandia環境を前提としている為、適宜読み替える必要があるので要注意。

Pentaho

OpenOLAPと比較すると、Pentahoは正統なBIツールという感じ。Pentaho自体は複数のProjectから成り立っていて、全体としては以下のような機能がある。

機能を見ただけでかなりお腹一杯な感じになりますが、もう一つ大きなハードルがあって・・・やはり海外産なので全てが英語なんですよね・・・どうやら外部ファイルで星の数程設定していけば日本語化できる感じなのですが、じゃーそれを保証できるかって言われると結構厳しい感じ。一応Pentahoの日本代理店で10万円弱で日本語版を売っているみたいですが、どうなんでしょうかね。さすがにそれを買ってまでの検証というレベルではなかったので、今回は行っていないので不明ですが。また、ドキュメントなども全て英語である為、そもそもツールを習熟するのが大変ってのもありますね。


今回の検証期間では、個別のアプリケーションについての検証は行えたのですが、BIシステム全体を通しての検証という点では時間切れという感じでした。 機能的にはかなり豊富で、現在もコミュニティ活発という事もあり、本格的にOSSでBIを考えるとPentahoが良いような気がしますが、時間切れという事なので致し方なし・・・。 う〜ん、もうちょっと触ってみたかったな!ってことで、触ってみようという方は以下のリンクから〜

まとめ

本格的なBIを考えていくならやはりBI全部入りのツールで決まりですかね。 一応SpagoやJasperといった、BIツールもあるので、そちらについても検証する必要があるかと思いますが、BIの一部を担うツールとBI全部入りのツールで比較してしまうと、やはり機能面でのギャップが一番の理由かなと。 OLAPはできるけどデータマイニングはちょっと・・・となってしまうと、結局全て変更という話になってしまいますからね。 とはいえ、ツール習熟にかかる工数とかを考え出すと、かなり悩ましい感じですね。 まぁ、一旦この場ではモヤッとした感じで終わらせておきます(ぉ

BIツールあれこれ

こんにちわ、はるです。


ちょいと仕事の用事で、BIツールについてもお勉強しなくてはならなくなったので、こちらについても書いてみます。BIツールといっても結構色々あるもので、もう途中でめんどくさくなる位ありますね^^;


というわけで、ある程度カテゴリー分けしながら、とりあえずは列挙してみようと思います。また、今回はオープンソースものでというリクエストがあるので、オープンソースものを一通り触ってみようかなという感じです。触っていく上でのポイントは、機能よりも構築スピード。

BI全部入り

レポーティングツール

DWH

DWHアプライアンス

  • 該当なし(そりゃそうだw


勿論まだまだあるとは思いますが、こんな所で一通りは出ましたかね? それにしても、BI関係って盛り上がっているようにみえて、日本語の情報がかなり少なくて困りものですね>< もっとこんなのあるよ〜!とか、これは使いやすいよ〜とかいうのがあれば、教えて頂けると助かります><

オラクルインタビューに行ってきました

こんにちわ、はるきです。
というわけで、昨日オラクル青山センターに行ってきました★ つい最近、唐突にはてなダイアリーを始めて、更にOracle XEについて書いていたのには、理由があったんですね(ぉ


このオラクルインタビュー、何者かというと以下のような経緯で開催されたぽいです。


で、このインタビューに招かれた人は、基本的にはOracle XE関連ではてぶをつけてる&はてなダイアリーを書いている人を対象に案内を出したそうです。おいらはというと、Oracle XEの存在は知っていましたが、全く触った事もなければ、つい先日はてなダイアリー始めたばかりなので対象外、というかはてなのIDも持ってませんでしたしね。ではなぜお招き頂いたのかというと、前職(大手独立SI)の同僚がたまたまたはてなさんに転職しまして、そのツテでお招き頂いたという感じです。


まぁそんな経緯で参加する事になったので、あわててOracle XEを触ってみて、更にそれをはてなダイアリーに書いてみるかという感じになったわけですね^^; 触りきれていない感は否めないですが・・・


さて、そんなわけで参加してきたオラクルインタビューですが、非常に楽しい時間を過ごす事ができました♪ 時間にして一時間半ほど、Oracle XEについてあれやこれや、たま〜にXEとは関係のない話もあれやこれや(笑 参加メンバはタブン10人でおいらが座ったテーブルでは4名でインタビューを受けてきました。インタビュアーは、はてな副社長のid:kawasakiさんとOTNのシニアマネージャの方でした。インタビュー中は、OTNの方もかなりぶっちゃけたトークをして頂いて、とてもここでは書けないようなお話も色々と伺う事が出来ました。また、インタビューが終わってから皆さまと名刺交換させて頂いたのですが、皆さま凄い肩書の方々で、若干場違い感が漂いましたが、後の祭り\(^o^)/


というわけで、インタビューで出てきたトピックだけ置いておきます。

  • USでは開発者、特にエンドユーザ側の開発者(情シス部門の方ですかね)の利用が多く、先日のOracle OpenWorldでは、Oracle XEをネタにセッションが持たれる程、盛り上がっているらしい。
  • 一方日本では、ある種の情報統制が行われているらしい。
    • Oracle XEを大きく扱う事で、その他のライセンスの売上減少に繋がる事を危惧しているぽい。
      • ここは、参加者全員で否定してました(笑 だって、Oracle XEだとサポート契約できないし、サポート契約できないって事はパッチ貰えない&問い合わせできない、という事で日本の企業相手にはとても商用では使えませんよ、と。
  • どのような場面でOracle XEが活用できると考えられるか?
    • 色々な意見が出てきていましたが、個人的には教育、開発〜UT、個人作成アプリ用かなと思いました。あとちょっと考えているのは、今企画してるサービスのDBをOracle XEにして、もっと使いたいorサポート欲しいならグレードアップしちゃいなYO!んで、そこのコンサルしてあげるよYO!という使い方もありかな〜と、考えてたりします(笑
    • ちなみに、やっぱりUSでも教育とか開発者個人向けってところが殆どみたいです。そもそもOracleの開発ラインも、その他の製品とは別ラインで開発されているらしい。

こんなところですかね?他にも色々お話ししました、Oracleインストーラはいけてないって話や、MySQL/Postgreと比べてOracleってどう?みたいな話などなど。


とにもかくにも、かなり面白かったので、参加してみてとても良かったです★
声掛けてくれてどうもありがと〜!<id:chris4403


書き忘れてた・・・orz
今回のオラクルインタビューに参加して、はてなさんからはてぶリニューアル記念のボールペンと、オラクルさんからOTN Software(?)を頂きました★ OTN Softwareは後日郵送という事なので、届き次第、両方ともUPしてみよう(`ω´)グフフ

簡単なアプリケーションを作ってみる

こんにちわ、はるきです。


というわけで、早速Oracle XEのスタートガイドに記載されている、簡単なアプリケーションを作ってみたいと思います。 ※というわけでAPEX(旧:HTML DB)を触ってみたわけですが、これ、2006年からあるんですね・・・。普段コマンドベースでしか触らないので知りませんでした・・・お恥ずかしい・・・でも、それに気付いたのが記事書いてからなので、いちお残しておきますね>< この機能がOracle XEの機能だと思ってたなんてとても言えない・・・けど、前の記事とか見たらばれちゃいますが・・・

ユーザのロック解除

まずはデフォルトで作成されているユーザがアカウントロックされている為、そのロックを解除します。今回はスタートガイドに則って作成する為、GUIを使ってアカウントロックなどの操作を行いますが、SQLが書けるのであれば、SQLでやった方が断然早いです(ぉ


1.Oracel XEの管理HPの管理ページにアクセスし、「データベース・ユーザー」をクリックします。
 
2.表示された「データベース・ユーザーの管理」ページで、表示されている「HR」というユーザをクリックします。
 
3.ユーザの管理画面が表示されるので、「パスワード」および「パスワードの確認」に「hr」と入力し、「アカウント・ステータス」を「ロック解除済」に変更して、「ユーザの変更」をクリックします。
 
4.遷移先の画面で、正常にパスワードが変更された事を確認し、「ログアウト」をクリックします。
 


以上の操作で「HR」ユーザのアカウントロックの解除が完了しました。

アプリケーションの作成

これでアプリケーションを作成する準備が整いましたので、いよいよ簡単なアプリケーションの作成に入ります。アプリケーションの作成は、基本的にGUIによるウィザード形式で選択していくとできてしまう感じです。


1.ログアウト完了画面で表示されている「ログイン」をクリックします。
 
2.ログイン画面が表示されるので、先ほどアカウントロックを解除した「HR」ユーザでログインします。「ユーザー名」「パスワード」に「hr」を入力し、「ログイン」をクリックします。
 
3.ログイン直後のホームページに、「アプリケーション・ビルダー」という今まで見たことがないアイコンが出てきましたね。その「アプリケーション・ビルダー」をクリックします。
 
4.アプリケーションビルダーの画面が表示されたら、「作成」をクリックします。
 
5.「アプリケーションの作成」画面で、「アプリケーションの作成」がチェックされている事を確認して、「次へ」をクリックします。
 
6.表示された画面で、「名前」を入力します。これはアプリケーションの論理名となるので、お好みで命名してしまって問題ありません。その他はデフォルトのままで「次へ」をクリックします。
 
7.「ページの追加」が表示されたら、「ページ・タイプの選択」で「レポートとフォーム」を選択し、「表名」の右側にある小さなボタンをクリックして、表示された画面から「ENPLOYEES」を選択して、「ページの追加」をクリックします。
 
8.画面が更新され、「アプリケーションの作成」のところに、二つのページが表示されている事を確認して、「次へ」をクリックします。
 
9.続いてタブの選択画面が表示されるので、「1レベルのタブ」を選択して、「次へ」をクリックします。
 
10.今回は共有コンポーネントは使用しないので、「いいえ」を選択して、「次へ」をクリックします。
 
11.認証の項では全てデフォルトのまま、「次へ」をクリックします。
 
12.「テーマの選択」では好みのUIを選択して、「次へ」をクリックします。
 
13.最後に最終確認です。これまでの設定内容に問題がなければ、「作成」をクリックします。
 


以上の操作で、とってもシンプルではありますが、アプリケーションと呼べるものが作成されました。

アプリケーションの実行

作成したアプリケーションを実際に動かしてみましょう。


1.下図の画面で、「アプリケーションの実行」をクリックします。
 
2.表示されたログイン画面で、「ユーザー名」「パスワード」に「hr」と入力し、「ログイン」をクリックします。
 
3.ログインに成功すると下図の画面が表示されます。これはサンプルとして登録されている「ENPLOYEES」に登録されているデータを表示しており、検索や作成、更新、削除などの操作が可能となっています。
 


以上でアプリケーションの実行はできました。このページに記述されている数少ないステップで、ログイン制御、Oracleのデータアクセスといった、必要最低限の簡単なアプリケーション作成ができてしまいました。このページを参照して、色々な機能を付けていくことができれば、それなりのアプリケーションが作成できそうですね。


以上でアプリケーションの作成は完了ですが、実際に触ってみての感想としては、随分簡単にアプリケーションができちゃうのね〜という感じです。まともな(?)WEBサイトを作成するには、それなりの労力が必要そうですが、それにしてもほぼGUIで、コーディングなんて微々たるものって感じですかね。この機能を使えば、普段はプログラミングには縁がない人にとっても、アプリケーションの開発とかが身近になるかもしれませんね。後は色々なドキュメントが日本語化されればってところでしょうか?個人で使う分にはメモリの制限もディスクの制限もあんまり関係なさそうだし、家計簿ソフトとかだったら、使えそうな感じがします。というわけで、自分で使うように家計簿ソフトをOracle XE(正確にはApplication Express?)で作ってみようかな〜なんて思ってます。今までは、ず〜っと使うような自分用のアプリケーションで、データベースの選択肢としてOracleはなかったですからね!