[ETL/ELT] Great Discussion of ETL and ELT Tooling in TDWI Linkedin Group

現在TDWI (The Data Warehousing Institute)の公式なLinkedInグループで、ETLとELTのツールについての大きな議論が、「ETLのSQLは持続可能か?(“How Sustainable is SQL for ETL?” )」というスレッドで起こっています。中身を見てみると…
  • ETLツールを使った場合と、手でコードを書いた場合の長所と短所
  • ETL(変換エンジンが分かれている)vs ELT(データベース内で変換)+プッシュダウンソリューション
  • ETLとデータウェアハウス製品の将来
多くのコミュニティの参加者(職業も様々)が何ヶ月もこの会話を続けていきながら学んで行っています。ぜひチェックしてみてください。
LinkedInに参加されているなら、参加者数がまもなく2000名を超える、OWBとODIユーザー向けのOracle ETL/Data IntegrationというLinkedInグループにも参加してください。

LinkedIn TDWI Official GroupでのETL vs ELTのスレッド

Oracle Data Integration: Warehouse Builder (OWB), Data Integrator (ODI), Data Profiling and Quality


原文はこちら。
http://blogs.oracle.com/warehousebuilder/2011/03/great_discussion_of_etl_and_elt_tooling_in_tdwi_linkedin_group.html

[ADF Faces] Visio Stencils for ADF Faces Available on SampleCode

ビジュアルデザイナやUI開発者がADFアプリケーションのモックアップを作成する際に、JDeveloperを使わずに手早く作ることができる、新しいツールの登場をご紹介できることをうれしく思います。
このツールは以下のURLから利用できます。ADF Visioステンシルには、よく使われるビジュアルコンポーネントのシェイプ、アイコン、レイアウトがたくさん含まれています。

code-sample ID S674: Visio Stencils for ADF Faces Rich Client Components
https://www.samplecode.oracle.com/tracker/tracking/linkid/prpl1004?id=S674


Visioステンシルの使い方は次の動画を参考にしてください。

JDeveloperフォーラムでこのステンシルについて思うところをお知らせください。

JDeveloper Forum
http://forums.oracle.com/forums/forum.jspa?forumID=83


原文はこちら。
http://blogs.oracle.com/jdeveloperpm/2011/03/adf_faces_stencils_for_visio_available_on_samplecode.html

[XML] CAMeditor v1.9 – thoughts and reflections

近頃NIEMの機能を強化したCAMエディタ最新版をSourceforge.netにてリリースしました。
このリリースは、主に以前のバージョンのバグ修正です。

[訳注]NIEM (National Information Exchange Model)
米国政府とその情報交換先との間での最も重要な XML ベースの情報交換標準
 
現在v2.0のリリースを目指しています。このリリースの特色は、大幅な改善と、実質的にすべての分野で新機能を追加する点にあります。最も重要な強化点は、辞書の処理を改善し、と新しい交換スキーマを直接コンポーネントの辞書セットから視覚的に設計することができるところです。
さらに、特にUbuntuや非Windowsプラットフォームでの実行をサポートするため、1.9.xの中間リリースでパッチや機能拡張をしています。
AntスクリプトでCAMV検証エンジンをデプロイできるので、テンプレートのバッチやXMLインスタンスのサンプルをコマンドラインスクリプトで単体テストが可能です。
テスト目的で早期リリースバージョンが利用できるようになると、より多くの更新を目の当たりにするでしょう。

[訳注]CAMV
XML Validation Framework using OASIS CAM
http://wiki.oasis-open.org/cam
Content Assembly Mechanism (CAM) 
http://www.oasis-open.org/jp/specs/index.php#camv1.1

参考URL
JCAM Engine with XML Editor / Validator (SourceForge.net)
http://www.sourceforge.net/projects/camprocessor

OASIS CAMの仕様
http://docs.oasis-open.org/cam/v1.1/os/OASIS-CAM-Specification-1_1-015-060107.html

原文はこちら。
http://blogs.oracle.com/xmlorb/2011/03/cameditor_v19_thoughts_and_reflections.html

[Java] Java Space on Parleys

JavaOne 2010、JVM Language Summit 2010のセッションの厳選したものを、Oracle Technology Network TechCastと同じように、Parleysのウェブサイトの新しいJava Spaceでご覧になれます。

JavaOne 2010
http://www.oracle.com/us/javaonedevelop/index.html
JVM Language Summit 2010
http://wiki.jvmlangsummit.com/Main_Page
Oracle Technology Network TechCasts
http://medianetwork.oracle.com/playlist/86
Parleys
http://www.parleys.com/

これはOracleがStephan Janssen氏(Parleys創業者)と提携して可能になったものです。
ParleysのWebサイトでは、オンラインコンテンツを閲覧するためのユーザーフレンドリーな体験を提供していて、マシンにコンテンツををダウンロードしたり、モバイルデバイス上で外出先にそれらを見ることもできます。
現在ご覧になれるのは、Javaの著名人とOracleの専門家からの見解です。
  • JavaOne 2010のセッション
    • Best practices for signing code (Sean Mullan)
    • Building software using rich client platforms (Rickard Thulin)
    • Developing beyond the component libraries (Ryan Cuprak)
    • Java API for keyhole markup language (Florian Bachmann)
    • Avoiding common user experience anti-patterns (Burk Hufnagel)
    • Accelerating Java workloads via GPUs (Gary Frost)
  • JVM Languages Summit 2010のセッション
    • Mixed language project compilation in Eclipse (Andy Clement)
    • Gathering the threads (John Rose)
    • LINQ: language features for concurrency (Neal Gafter)
    • Improvements in OpenJDK useful for JVM languages (Eric Caspole)
    • Symmetric Multilanguage - VM Architecture (Oleg Pliss)
  • 製品の進化に関するOracleエキスパートとの特別インタビュー
    • Glassfish 3.1 and Java EE - Ludovic Champenois, Java EE architect
    • NetBeans IDE 6.9 - John Jullion-Ceccarelli, Martin Ryzl
対談やセッションの内容をアジェンダビューを使って選択できます。そして関連するコンテンツをプレゼンテーション閲覧中に検索することができます。


原文はこちら。
http://blogs.oracle.com/java/2011/02/java_space_on_parleys.html

[Database] Clusterware 11gR2 – Setting up an Active/Passive failover configuration

Oracleはデータベースの高可用性を確保するためのソリューションを幅広く提供しています。DataGuard、RAC、そしてこの二つの組み合わせ(MAA-Maximum Available Architectureで推奨しています)がよく事例としてあるソリューションです。
しかし、フェールオーバ機能を用いたActive/Passiveアーキテクチャのシステムを保護する場合にはどうでしょう。他社のクラスタシステムを使うことを考慮されることが多いと思います。
Oracle Clusterwareテクノロジーは、Oracle DatabaseやOracle Unbreakable Linuxに追加費用は不要であることは多くの人がご存じのことですが、Oracle RACと関連づけてらっしゃることが多いため、ほとんどフェールオーバソリューションを構築する際に使われることがありません。

Oracle 11gR2 Grid Infrastructureの1コンポーネントであるOracle Clusterware 11gR2は、自動フェールオーバ構成を設定するための総合的なフレームワークを提供します。
実際に、ほとんどすべてのアプリケーション(簡単なxclockからもっとも複雑なアプリケーションサーバまで)をフェールオーバさせることができ、そして保護することができます。
Oracle Clusterwareは、単一サーバーをクラスタリングすることで、単一のシステムとして機能させるポータブル・クラスタ・システムです。また、 Oracle Clusterwareは、Oracle Real Application Clusters(RAC)に必要なインフラストラクチャを提供します。さらに、すべてのOracleアプリケーションや、クラスタ内にある他のあらゆる種類のアプリケーションを保護します。
次の数行で、この目的を達成するための違う手順を提示しようと思っています。
動作する11gR2データベースを自動フェイルオーバー機能によって完全に保護する

読者がOracle Database 11gR2やOracle Grid Infrastructure 11gR2をLinux上にインストールすることに慣れており、(共有ストレージとして使っているので)ASMの構成も全く問題ないものと仮定します。もしそうでないなら、Oracleの製品ドキュメントをご覧ください。
Oracle VirtualBox環境でテストを実施しました。スクリプトはテスト済みで、問題なく動作していますが、スクリプト中の文字にTypoや間違いがある可能性もあります。
このエントリはClusterware Frameworkに関連する教育コースを置き換えるものではありません。Clusterwareの機能が非常に強力であることを知って頂きたいと思います。

注意:このエントリはPhilip Newlanのコメントを受けて改訂されています。

事前に準備しておくもの
  • OSレベルが一致するLinuxが動作するハードウェア2台(OELCluster01、OELCluster02)
    • 今回はOEL5u5とEnterprise Kernelを使用
  • VirtualBox上に共有ストレージ(SAN)
    • 今回はOpenfireを使ってSANをシミュレーショトしました。
  • Oracle Database 11gR2  (11.2.0.1)
  • Oracle Grod Infrastructure 11gR2 (11.2.0.1)
Step-1 ソフトウェアをインストール
  • asmlibを使って3個のASMディスクを作成(ASM_CRS、ASM_DTA、ASM_FRA)
  • クラスタ用にGrid Infrastructureをインストール(OELCluste01、OELCluster02の2ノードがクラスタを構成)
    • ASM_CRS:Voting DiskとOCRを格納
    • SCANを使用
  • 両ノードにOracle Databaseをスタンドアロン構成でインストール
    • asmcaを使って両ノードにディスクグループをチェックおよびマウント
    • dbcaを使ってプライマリノードにデータベースを作成し構成
      • インスタンス名はDB11G
      • pfileをもう一方のノードへコピー
      • adumpディレクトリを他方のノードで作成
Step-2 保護するリソースをセットアップ 

dbcaで作成後、Grid Infratructureで利用可能なOracle RestartテクノロジーがDBを自動的に保護しますので、クラッシュした場合(kill -9 smonなど)には(可能であれば)自動的に再起動します。
データベースリソースはCluster Registryに作成されていて、次のコマンドで監視することができます。このコマンドは ora.dba11g.db エントリを表示します。
crsctl status resource ora.dba11g.db
では以下の手順でこのリソース定義を保存しておきましょう。
  • mkdir -p /crs/11.2.0/HA_scripts
  • chown oracle:oinstall /crs/11.2.0/HA_scripts
  • crsctl status resource ora.db.11g.db -p > /crs/11.2.0/HA_scripts/myResource.txt
興味深いことではあるけれども、Oracle Restartはクラスタに気づいていないので、クラスタ構成している他方のノード上のデータベースを再起動することはできません。そのため、OCR(訳注:OCR=Oracle Cluster Registry)の設定情報から削除してしまいましょう。
  • srvctl stop database -d DB11G
  • srvctl remove database -d DB11G
削除したリソースに代わって、cluster_resourceという新しいリソースを作成します。
  • スクリプトを作成します。
    /crs/11.2.0/HA_scripts/my_ActivePassive_Cluster.sh
    #!/bin/bash

    export ORACLE_HOME=/oracle/product/11.2.0/dbhome_1
    export ORACLE_SID=DB11G

    case $1 in
    'start')
      $ORACLE_HOME/bin/sqlplus /nolog <<EOF
      connect / as sysdba
      startup
    EOF
      RET=0
      ;;
    'stop')
      $ORACLE_HOME/bin/sqlplus /nolog <<EOF
      connect / as sysdba
      shutdown immediate
    EOF
      RET=0
      ;;

    'clean')
      $ORACLE_HOME/bin/sqlplus /nolog <<EOF
      connect / as sysdba
      shutdown abort
      ##for i in `ps -ef | grep -i $ORACLE_SID | awk '{print $2}' ` ;do kill -9 $i; done
    EOF
      RET=0
      ;;

    'check')
       ok=`ps -ef | grep smon | grep $ORACLE_SID | wc -l`
       if [ $ok = 0 ]; then
         RET=1
       else
         RET=0
       fi
       ;;
    '*')  
      RET=0
      ;;
    esac

    if [ $RET -eq 0 ]; then
       exit 0
    else
       exit 1
    fi 
このスクリプトには、少なくともデータベースの開始、停止、削除、チェックのためのメソッドを含む必要があります。このスクリプトは一目瞭然で、特別なものは含んでいません。実行権限(+x)があること、Oracleユーザーとして実行(ACLプロパティのため。後述します)し、環境を知る必要があることを認識しておきましょう。このスクリプトはクラスタの各ノードに配置しておく必要があります。
さらに、11.2では削除メソッドは必須で、shutdown abortか、もしくはkill -9で残っているプロセスをすべて停止する機能を用意しておく必要があります。
  • chmod +x /crs/11.2.0/HA_scripts/my_ActivePassive_Cluster.sh
  • scp  /crs/11.2.0/HA_scripts/my_ActivePassive_Cluster.sh   oracle@OELCluster02:/crs/11.2.0/HA_scripts
myResource.txtで取得した情報から、新しいリソースファイルを作成します。myResource.txtの中身を以下に掲載しておきます。ご覧になってわかるように、ora.database.typeリソースをora.db11g.dbという名前で定義しています。多くのプロパティがこのリソースタイプと関連していますが、cluster_resourceのために使う必要がないプロパティも含まれています。
NAME=ora.db11g.db
TYPE=ora.database.type
ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r--
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=1
CHECK_INTERVAL=1
CHECK_TIMEOUT=600
CLUSTER_DATABASE=false
DB_UNIQUE_NAME=DB11G
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database) PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .)) ELEMENT(INSTANCE_NAME= %GEN_USR_ORA_INST_NAME%)
DEGREE=1
DESCRIPTION=Oracle Database resource
ENABLED=1
FAILOVER_DELAY=0
FAILURE_INTERVAL=60
FAILURE_THRESHOLD=1
GEN_AUDIT_FILE_DEST=/oracle/admin/DB11G/adump
GEN_USR_ORA_INST_NAME=
GEN_USR_ORA_INST_NAME@SERVERNAME(oelcluster01)=DB11G
HOSTING_MEMBERS=
INSTANCE_FAILOVER=0
LOAD=1
LOGGING_LEVEL=1
MANAGEMENT_POLICY=AUTOMATIC
NLS_LANG=
NOT_RESTARTING_TEMPLATE=
OFFLINE_CHECK_INTERVAL=0
ORACLE_HOME=/oracle/product/11.2.0/dbhome_1
PLACEMENT=restricted
PROFILE_CHANGE_TEMPLATE=
RESTART_ATTEMPTS=2
ROLE=PRIMARY
SCRIPT_TIMEOUT=60
SERVER_POOLS=ora.DB11G
SPFILE=+DTA/DB11G/spfileDB11G.ora
START_DEPENDENCIES=hard(ora.DTA.dg,ora.FRA.dg) weak(type:ora.listener.type,uniform:ora.ons,uniform:ora.eons) pullup(ora.DTA.dg,ora.FRA.dg)
START_TIMEOUT=600
STATE_CHANGE_TEMPLATE=
STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DTA.dg,shutdown:ora.FRA.dg)
STOP_TIMEOUT=600
UPTIME_THRESHOLD=1h
USR_ORA_DB_NAME=DB11G
USR_ORA_DOMAIN=haroland
USR_ORA_ENV=
USR_ORA_FLAGS=
USR_ORA_INST_NAME=DB11G
USR_ORA_OPEN_MODE=open
USR_ORA_OPI=false
USR_ORA_STOP_MODE=immediate
VERSION=11.2.0.1.0
myResource.txtからデータベースタイプに関連するエントリを削除し、少々手を加えて、以下のようなmyNewResource.txtを作成します。注意すべき点は以下の通りです。
  • NAMEプロパティにはora.をつけない
  • TYPEプロパティはora.database.typeではないが、cluster_resourceである
  • ACTION_SCRIPTの定義をしておく
  • HOSTING_MEMBERSでクラスタメンバーを列挙しておく(olsnodesコマンドの返値)
NAME=DB11G.db
TYPE=cluster_resource
DESCRIPTION=Oracle Database resource
ACL=owner:oracle:rwx,pgrp:oinstall:rwx,other::r--
ACTION_SCRIPT=/crs/11.2.0/HA_scripts/my_ActivePassive_Cluster.sh
PLACEMENT=restricted
ACTIVE_PLACEMENT=0
AUTO_START=restore
CARDINALITY=1
CHECK_INTERVAL=10
DEGREE=1
ENABLED=1
HOSTING_MEMBERS=oelcluster01 oelcluster02
LOGGING_LEVEL=1
RESTART_ATTEMPTS=1
START_DEPENDENCIES=hard(ora.DTA.dg,ora.FRA.dg) weak(type:ora.listener.type,uniform:ora.ons,uniform:ora.eons) pullup(ora.DTA.dg,ora.FRA.dg)
START_TIMEOUT=600
STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DTA.dg,shutdown:ora.FRA.dg)
STOP_TIMEOUT=600
UPTIME_THRESHOLD=1h
そしてリソースを登録します。リソースタイプに注意しましょう。ora.database.typeリソースではなく、cluster_resourceです(Oracleの推奨)。
  • crsctl add resource DB11G.db  -type cluster_resource -file /crs/11.2.0/HA_scripts/myNewResource.txt
Step-3 リソースを起動
  • crsctl start resource DB11G.db
このコマンドでACTION_SCRIPTを起動し、クラスタのプライマリノード上のパラメータをチェックします。

Step-4 テスト

2個のメソッドを使ってセットアップをテストします。
  • crsctl relocate resource DB11G.db
このコマンドは(両ノードの)ACTION_SCRIPTを呼び出し、アクティブノードのデータベースを停止し、別のノードのデータベースを起動します。もう一度実行したら、元のノードに戻すことができますが、今度はデータベース稼働中のサーバの電源を落としてみましょう。ちょっとの遅延のあと、データベースがノード1(訳注:もとのノード)に戻ることを確認してください。

結論

ソフトウェアをインストールし、スタンドアロンのデータベースを作成するという、非常に一般的で通常の作業をした後の手順は非常に簡単です。
  1. 実行スクリプトをクラスタを構成するすべてのノードに配置
  2. リソースファイルを作成
  3. リソースファイルを使ってOCRにリソースを作成・登録
  4. リソースの開始
このソリューションは他社のソリューションの代替となり得る、非常に興味深いものです。

参考URL

原文はこちら。
http://blogs.oracle.com/xpsoluxdb/2011/02/clusterware_11gr2_setting_up_an_activepassive_failover_configuration.html

[BI] Oracle BI製品の製品情報および技術情報

日本語なので、ぜひ原文をどうぞ。
BI製品とひとくくりにしてもたくさんあるので、迷われたときにはまずこの大きな区分で考えてください。詳細については筆者が後日のエントリで掲載されるでしょう(たぶん)。

原文はこちら。
http://blogs.oracle.com/bijapan/2011/03/oraclebi.html

[Java] Creating Java Neural Networks

新しいOTN/Javaの記事「NetBeansでニューラルネットワーク」(Zoran Sevarac)では、NetBeans上に作られたオープンソースのJavaニューラルネットワーク開発環境であるNeuroph Studioについてレポートしています。この記事では、分類のためのJavaニューラルネットワークを作成する方法を伝えています。
以下、記事より
  • ニューラルネットワークは、認識、予測、分類、制御といった曖昧な問題に適した人工知能(テクノロジーを学習する機械)です。この記事では分類のためのJavaニューラルネットワークを作成する方法をご紹介します。Neuroph Studioにも画像認識、テキスト文字認識、手書き文字の認識の機能があることを知ってください。
  • Neuroph StudioはJavaのニューラルネットワーク開発環境でNetBeansプラットフォームとNeuroph Framework上に構築されており、ニューラルネットワーク開発のためにカスタマイズされたIDEライクの環境です。Neuroph StudioはNeuroph Framework上にあるGUIで、Neuroph Frameworkは、ニューラルネットワークを作成するためのクラスを提供するフル装備のJavaフレームワークです。 
著者のZoran Sevaracはベオグラード大学のソフトウェア工学科のTA(Teaching Assistant)で、ベオグラード大学人工知能研究室に所属しており、GOAI Research Network(訳注:Good Old AI Research Network http://goodoldai.org/ )のメンバーでもあります。研究を通じて、Javaのニューラルネットワークフレームワークの開発をしていて、その開発成果をオープンソースプロジェクト「Neuroph」としてリリースしました。

記事はこちら。
Neural Networks on the NetBeans Platform
http://www.oracle.com/technetwork/articles/java/nbneural-317387.html

参考URL
Project Neuroph
http://neuroph.sourceforge.net/

原文はこちら。
http://blogs.oracle.com/java/2011/03/creating_java_neural_networks.html