%XGRZDDSOLNDFMLDQDOLW\F]Q\FKSU]\X*\FLX%XVLQHVV,QWHOOLJHQFH%HDQV
63
1 Wprowadzenie
Na obserwowany w ostatnich latach wzrost zainteresowania aplikacjami analitycznymi dla PDJD]\QyZ GDQ\FK 2/$3 QDNáDGD REHFQLH VL ]QDF]Q\ Z]URVW SRSXODUQRFL M ]\ND
programoZDQLD -DYD RUD] WHFKQRORJLL ZLHORZDUVWZRZ\FK : Z\QLNX WHJR M ]\N -Dva coraz
F] FLHMVWDMHVL SRGVWDZRZSODWIRUPLPSOHPHQWDFMLDSOLNDFMLZVSRPDJDMF\FKSRGHMPRZDQLH
decyzji. NajpopuODUQLHMV]H UR]ZL]DQLD DSOLNDF\MQH ED]XM QD DUFKLWHNWXUDFK VDPRG]LHOQ\FK
aplikacji Java, appletów Java oraz serwletów Java.
:D*Q\P HOHPHQWem wszelkich aplikacji bazodanowych jest realizacja komunikacji z systePHP]DU]G]DQLDED]GDQ\FK3URJUDPLVWDNWyU\GRW\FKF]DVNRQVWUXRZDáDSOLNDFMH-DYDGOD
sysWHPyZ 2/73 QDMF] FLHM Z\NRU]\VW\ZDá Z W\P FHOX ELEOLRWHN -'%& -DYD 'DWDEDVH
Connectivity -'%& VWDQRZLáD ]ELyU NODV -DYD XPR*OLZLDMF\FK QDZL]DQLH SRáF]HQLD ] ED]
GDQ\FK SU]HVáDQLH SROHFHQLD 64/ RUD] RGHEUDQLH Z\QLNX MHJR SUDF\ 1D ED]LH ELEOLRWHNL -'%&
SRZVWDáR ZLHOH LQQ\FK UR]ZL]D MDN QD SU]\NáDG ELEOLRWHNL NRPSRQHQWyZ ,QIR6ZLQJ
uPR*OLZLDMFHáDWZEXGRZ ZL]XDOQ\FKDSOLNDFMLGRVW SXGRED]GDQ\FK
)LOR]RILD -'%& PR*H E\ü Z\NRU]\VW\ZDQD UyZQLH* Z DSOLNDFMDFK W\SX 2/$3 -HGQDN ]H
Z]JO GXQDEDUG]R]áR*RQ\FKDUDNWHU]DS\WDNLHURZDQ\FKGRV\VWHPXPDJD]\QXGDQ\FKRUD]]H
Z]JO GX QD Z\PDJDQLD Z\VRNLHM LQWHUDNF\MQRFL DSOLNDFML URQLH ]DSRWU]HERZDQLH QD
specjalizoZDQHLQWHUIHMV\SURJUDPLVW\F]QHGODGRVW SXGRPDJD]\QXGDQ\FK2GSRZLHG]LU\QNX
QDWDNLH]DSRWU]HERZDQLHVSUDFHQDGXQLZHUVDOQ\PLLQWHUIHMVDPLQD]\ZDQ\PL2/$3$3,G]L NL
kWyU\P SURJUDPLVWD PyJáE\ Z MHGQROLW\ L QLHVNRPSOLNRZDQ\ VSRVyE NRU]\VWDü ] V\VWHPyZ
PDJD]\QyZ GDQ\FK Uy*Q\FK SURGXFHQWyZ -HGQ ]H ]JáDV]DQ\FK Z W\P ]DNUHVLH SURSR]\FML MHVW
-DYD2/$3$3,GODV\VWHPX]DU]G]DQLDED]GDQ\FK2UDFOHL-DYD2/$3$3,MHVWLQWerfejsem programiVW\F]Q\P XPR*OLZLDMF\P SU]HWZDU]DQLH GDQ\FK Z PDJD]\QLH GDQ\FK ] SR]LRPX
SURJUDPX-DYD-DYD2/$3$3,PR*HE\üHODVW\F]QLHZ\NRU]\VW\ZDQ\ZUy*Q\FKDUFKLWHNWXUDFK
aplikacji Java.
1DED]LHLQWHUIHMVX-DYD2/$3$3,SRZVWDáDELEOLRWHNDNRPSonentów Business Intelligence
%HDQV NWyUD XPR*OLZLD SURJUDPLFLH NRQVWUXNFM ZL]XDOQ\FK L LQWHUDNF\MQ\FK DSOLNDFML
graficzQ\FK RSDUW\FK QD PDJD]\QDFK GDQ\FK ]DU]G]DQ\FK SU]H] 2UDFOHL ']L NL EXGRZLH
DSOLNDFML]JRWRZ\FKÄNORFNyZ´MDNLPLVNRPSRQHQW\%XVLQHVV,QWHOOLJHQFH%HDQVPR*HP\Z
VWRVXQNRZR NUyWNLP F]DVLH NRQVWUXRZDü IXQNFMRQDOQH L HODVW\F]QH DSOLNDFMH GOD ZVSRPDJDQLD
SRGHMPRZDQLD GHF\]ML : SHZQ\P VHQVLH NRPSRQHQW\ %XVLQHVV ,QWHOOLJHQFH %HDQV SHáQL Z
VWRVXQNXGR-DYD2/$3$3,SRGREQIXQNFM jak InfoSwing w stosunku do JDBC.
: DUW\NXOH RPyZLRQR DUFKLWHNWXU L IXQNFMRQDOQRü NRPSRQHQWyZ ] ELEOLRWHNL %XVLQHVV
InWHOOLJHQFH %HDQV : UR]G]LDOH GUXJLP NUyWNR RSLVDQR XVáXJ 2UDFOH 2/$3 6HUYLFHV 5R]G]LDá
trzeci omawia interfejs programistyczny Java 2/$3 $3, 5R]G]LDá F]ZDUW\ VWDQRZL SU]HJOG
ZáDVQoFLNRPSRQHQWyZ%XVLQHVV,QWHOOLJHQFH%HDQV
2 8VáXJD2/$36HUYLFHV
-HGQ]QDMEDUG]LHM]DXZD*DOQ\FKQRZRFLZV\VWHPLH]DU]G]DQLDED]GDQ\FK2UDFOHLMHVW
integracja dotychczasowego serwera relacyjnej bazy danych z serwerem wielowymiarowej bazy GDQ\FK([SUHVV(OHPHQWHPLQWHJUXMF\PRELHWHFKQRORJLHMHVWQRZDXVáXJDV\VWHPRZDQD]\ZDQD
2/$3 6HUYLFHV 2/$3 6HUYLFHV REVáXJXMH *GDQLD ]GDOQ\FK DSOLNDFML GRW\F]FH RSHUDFML
przetwaU]DQLD GDQ\FK D QDVW SQLH NLHUuje je, odpowiednio, do bazy relacyjnej lub
ZLHORZ\PLDURZHM = SXQNWX ZLG]HQLD DSOLNDFML X*\WNRZQLND XVáXJD 2/$3 6HUYLFHV REVáXJXMH
RWU]\PDQH *GDQLD Z MHGQROLW\ VSRVyE QLH]DOH*QLH RG IL]\F]QHM UHSUH]HQWDFML GDQ\FK UHODF\MQHM
ROLAP lub wielowymiarowej MOLAP).
Zakrzewicz
3 Java OLAP API
$SOLNDFMH DQDOLW\F]QH WUDNWXMFH 6=%' 2UDFOHL MDNR PDJD]\Q GDQ\FK PRJ E\ü EXGRZDQH ] Z\NRU]\VWDQLHP LQWHUIHMVX SURJUDPLVW\F]QHJR 2UDFOH -DYD 2/$3 $3, VSHF\ILNDFMD WHJR LQWHUIHMVX MHVW ]EOL*RQD GR DNWXDOQLH RSUDFRZ\ZDQHJR XQLZHUsalnego standarGX SU]HP\VáRZHJR -2/$3 -DYD 2/$3 $3, MHVW ]ELRUHP NODV M ]\ND -DYD UHDOL]XMF\FK RSHUDFMH SRELHUDQLD L SU]HWZDU]DQLD GDQ\FK XPLHV]F]RQ\FK Z PDJD]\QLH GDQ\FK 52/$3 OXE 02/$3 .ODV\ -DYD 2/$3 $3, X]\VNXM ]GDOQ\ GRVW S GR ED]\ GDQ\FK 2UDFOHL NRPXQLNXMF VL ]D SRPRF SURWRNRáX ,,23 LPSOHPHQWDFMD %RUODQG 9LVL%URNHU ] XVáXJ 2/$3 6HUYLFH LQVWDQFML 2UDFOHL 2JyOQ DUFKLWHNWXU DSOLNDFML DQDOLW\F]QHM RSDUWHM QD -DYD 2/$3 $3, SU]HGVWDZLRQR QD U\V
$SOLNDFMD-DYD
Z\ZRáDQLD-DYD
-DYD2/$3$3,
NOLHQW
25%
,,237&3,3
25%
2/$36HUYLFH
2&,
6=%'2UDFOHL
VHUZHU
%D]D
GDQ\FK
Rys.1 Ogólna architektura aplikacji analitycznej opartej na Java OLAP API
3U]HELHJNRPXQLNDFMLDSOLNDFMLX*\WNRZQLND]ED]GDQ\FKMHVWQDVW SXMF\:SLHUZV]HM
NROHMQRFL DSOLNDFMD Z\ZRáXMH RGSRZLHGQL PHWRG LQWHUIHMVX -DYD 2/$3 $3, SU]HND]XMF MHM
*GDQLHSREUDQLDGDQ\FK]ED]\GDQ\FK1DVW SQLHLQWHUIHMV-DYD2/$3$3,JHQHUXMHVWRVRZQH
*GDQLH SU]HVáDQLD VLHFLRZHJR L SU]HND]XMH MH GR PRGXáX 25% 2EMHFW 5HTXHVW %URNHU ]H
specyfiNDFML&25%$:NROHMQ\PNURNXPRGXá25%SU]HV\áDWUHü*GDQLDZUDPFHSURWRNRáX
IIOP (Internet Inter-25% 3URWRFRO GR XVáXJL 2UDFOH 2/$3 6HUYLFH :WHG\ RSURJUDPRZDQLH
2/$3 6HUYLFH JHQHUXMH WUHü ]DS\WDQLD 64/ RGSRZLDGDMFHJR *GDQLX SREUDQLD GDQ\FK ] ED]\
GDQ\FK 1D ]DNRF]HQLH ]DS\WDQLH 64/ MHVW SU]HND]\ZDQH GR Z\NRQDQLD LQVWDQFML 2racle9i, a wynik zaS\WDQLDZUDFDWDNVDPGURJGRDSOLNDFMLX*\WNRZQLND
,PSOHPHQWDFMD -DYD 2/$3 $3, Z\PDJD ZF]HQLHMV]HJR SU]\JRWRZDQLD QDVW SXMF\FK
struktur magazynu danych w bazie danych Oracle9i:
1. Tabeli
faktów i tabel wymiarów, zorganizowanych w stUXNWXU JZLD]G\OXESáDWNDQLHJX
VWUXNWXU\WHPRJ]RVWDüSU]\JRWRZDQHSU]\X*\FLXSRGVWDZRZ\FKSROHFH64/
2. 0HWDGDQ\FK RSLVXMF\FK PRGHO ORJLF]Q\ VWUXNWXU LVWQLHMF\FK Z ED]LH GDQ\FK PLDU
wyPLDUyZ L NRVWHN ZLHORZ\PLDURZ\FK PHWDGDQH SRZLQQ\ ]RVWDü ]GHfiniowane przy X*\FLXQDU] G]LD2UDFOH(QWHUSULVH0DQDJHUU\V
%XGRZDDSOLNDFMLDQDOLW\F]Q\FKSU]\X*\FLX%XVLQHVV,QWHOOLJHQFH%HDQV
65
5\V'HILQLFMDPHWDGDQ\FKZQDU] G]LX2UDFOH(QWHUSULVH0DQDJHU
Z punktu widzenia programisty, implementacja interfejsu Java OLAP API jest dostarczana Z IRUPLH G]LHVL FLX SOLNyZ Eibliotecznych JAR: collections.jar, express_common.jar,
express_connection.jar, express_mdm.jar, express_olapi_common.jar, express_olapi_data.jar, express_olapi_data_full.jar, express_olapi_data_receiveOnly.jar, express_olapi_indep.jar, express_spl.jar. OpUyF]WHJRGRSUDZLGáRZHMSUDF\-DYD2/$3$3,Z\PDJDQDMHVWREHFQRüNODV
VisiBrokera (vbjorb.jar, vbjapp.jar, vbjtools.jar) oraz klas CORBA wytwarzanych przez Oracle (aurora_client.jar, aurora_client_orbdep.jar, aurora_client_orbindep.jar).
W celu zilustrRZDQLD VSHF\ILNL LQWHUIHMVX -DYD 2/$3 $3, SRQL*HM SU]HGVWDZLRQR WUHü
koGX (UyGáRZHJR NWyU\ VSRZRGXMH SREUDQLH ] PDJD]\QX GDQ\FK LQIRUPDFML QD WHPDW W\FK
produkWyZ NWyUH Z PLHVLFX PDMX ]DURELá\ Z :LHONRSROVFH ZL FHM QL* ]á 'OD
porównania pU]HGVWDZLRQRWDN*HWUHüDQDORJLF]QHJRNRGXZM ]\NX([SUHVV
Java OLAP API:
Source regionSel = geography.selectValue(“Wielkopolska”);
Source czasSel = time.SelectValue(“MAY2002”);
Source zlotychZaProdukt = zlotychSrc.join(regionSel).join(czasSel);
Source prodSel = product.select(zlotychZaProdukt.gt(100000));
Source wynik = zlotychSrc.join(regionSel).join(czasSel).join(prodSel);
Express:
limit geography to ‘Wielkopolska’
limit time to ‘MAY2002’
limit product to zlotych gt 100000
4 Komponenty Business Intelligence Beans
Interfejs Java OL$3$3,XPR*OLZLDSURJUDPLFLHUHDOL]DFM RSHUDFMLSU]HWZDU]DQLDGDQ\FK
QDEDUG]RQLVNLPSR]LRPLH3R]ZDODWRNRQVWUXRZDüDSOLNDFMHREDUG]RERJDWHMIXQNFMRQDOQRFL
OHF]Z\PDJDRGSURJUDPLVW\GX*HJRZNáDGXSUDF\LEDUG]RGREUHM]QDMRPRFLNODVLPHWRG-DYD
OLAP API.
3URFHVWZRU]HQLDDSOLNDFML-DYDGODPDJD]\QyZGDQ\FKPR*HXOHF]QDF]QHPXVNUyFHQLXL
XSURV]F]HQLX G]L NL ]DVWRVRZDQLX JRWRZHM ELEOLRWHNL NRPSRQHQWyZ %XVLQHVV ,QWHOOLJHQFH %HDQV
(BI Beans). BI Beans to komponenty programowe zgodne ze specyfikacj -DYD%HDQV
Zakrzewicz
zaprojektoZDQH MDNR VNáDGQLNL ZL]XDOQ\FK DSOLNDFML DQDOLW\F]Q\FK RSDUW\FK QD 2UDFOHL 2/$3
:HZQ WU]QLHNRPSRQHQW\%,%HDQVRSDUWHVQDLQWHUIHMVLH-DYD2/$3$3,NRU]\VWDMF]MHJR
bogatej funkcjoQDOQRFLDMHGQRF]HQLHXNU\ZDMFMHJRVNRPSOLNRZDQLH8*\FLHNRPSRQHQWyZ%,
%HDQV ]ZDOQLD SURJUDPLVW -DYD ] NRQLHF]QRFL UR]ZL]DQLD GZyFK SUREOHPyZ NRPXQLNDFML ]
magazynem danych oraz graficznej pre]HQWDFMLZ\QLNyZ]DS\WD
.RPSRQHQW\ %, %HDQV PR*HP\ SRG]LHOLü QD GZLH JáyZQH JUXS\ NRPSRQHQW\
prezentaF\MQHLNRPSRQHQW\DQDOLW\F]QH.RPSRQHQW\SUH]HQWDF\MQHRGSRZLDGDM]DZ\ZLHWODQLH
wyniNyZ]DS\WDGRPDJD]\QXGDQ\FK.RPSRQHQW\DQDOLW\F]QHVáX*GRL]RODFMLPHFKDQL]PyZ
pre]HQWDFML GDQ\FK RG LQWHUIHMVX -DYD 2/$3 $3, )GDQLD NLHURZDQH SU]H] NRPponenty SUH]HQWDF\MQH GR NRPSRQHQWyZ DQDOLW\F]Q\FK V SU]HNáDGDQH QD VWRVRZQH Z\ZRáDQLD LQWHUIHMVX
QL*V]HJRSR]Lomu. Ogólna architektura aplikacji analitycznej opartej na komponentach BI Beans
]RVWDáDSU]Hdstawiona na rys. 3.
$SOLNDFMD-DYD
.RPSRQHQW\SUH]HQWDF\MQH%,%HDQV
.RPSRQHQW\DQDOLW\F]QH%,%HDQV
NOLHQW
Z\ZRáDQLD-DYD
-DYD2/$3$3,
25%
,,237&3,3
25%
2/$36HUYLFH
2&,
6=%'2UDFOHL
VHUZHU
%D]D
GDQ\FK
Rys. 3. Ogólna architektura aplikacji analitycznej opartej na BI Beans
=ELyU NRPSRQHQWyZ SUH]HQWDF\MQ\FK %, %HDQV ]DZLHUD QDVW SXMFH HOHPHQW\ 7DEOH
CrosVWDE L *UDSK .RPSRQHQW 7DEOH VáX*\ GR SUH]HQWDFML GDQ\FK Z XNáDG]LH MHGQRZ\PLDURZHM
tabeli rekordów. Komponent Crosstab reprezentuje dwuwymiarowy, tablicowy wycinek wielowymiaroZHMNRVWNLGDQ\FK.RPSRQHQW*UDSKVáX*\GRZL]XDOL]DFMLGDQ\FKZIRUPLHGZX-lub trójwymiaURZHJR Z\NUHVX JUDILF]QHJR :V]\VWNLH ZVSRPQLDQH NRPSRQHQW\ REVáXJXM
LQWHUDNFM ]X*\tNRZQLNLHPSR]ZDODMFQDG\QDPLF]QUHRUJDQL]DFM VSRVREXZ\ZLHWODQLDRUD]
zakresu przedstawianych danych (np. operacje zwijania, rozwijania, obracania, itd.).
.RPSRQHQW\SUH]HQWDF\MQH%,%HDQVPRJE\üZ\NRU]\VW\ZDQH]DUyZQRZDSOLNDFMDFK
klient-serwer (samodzielna aplikacja Java, applet Java), jak i w internetowych aplikacjach wielowarstwowych (serwlet Java, aplikacja JSP). W przypadku aplikacji wielowarstwowych,
%XGRZDDSOLNDFMLDQDOLW\F]Q\FKSU]\X*\FLX%XVLQHVV,QWHOOLJHQFH%HDQV
67
kompoQHQW\ SUH]HQWDF\MQH RGSRZLDGDM ]D JHQHURZDQLH G\QDPLF]Q\FK GRNXPHQWyZ +70/
SU]HV\áan\FK QDVW SQLH QD HNUDQ SU]HJOGDUNL X*\WNRZQLND 3U]\NáDG G]LDáDQLD WDNLHM DSOLNDFML
]RVWDáSU]Hdstawiony na rysunku 4.
Rys. 4. ,QWHUQHWRZDDSOLNDFMDDQDOLW\F]QDZ\NRU]\VWXMFDNRPSRQHQW*UDSK
.RPSRQHQW\ %, %HDQV PRJ SU]HFKRZ\ZDü V]F]HJyá\ VZRMHM NRQILJXUDFML VSHFMDOQ\P
repozytorium umieszczonym w bazie danych, nazywanym Katalogiem BI Beans. Dane
konfiguraF\MQH NRPSRQHQWyZ %, %HDQV ]DSLV\ZDQH VWDPZIRUPDFLH;0/ .DWDORJ %,%HDQV
XPR*OLZLDZVSyáG]LHOHQLHRELHNWyZDQDOLW\F]Q\FKWDbel, wykresów, itp.) definiowanych zarówno przez proJUDPLVW MDN L SU]H] VDPHJR X*\WNRZQLND : WHQ VSRVyE QD SU]\NáDG DQDOLW\F]Q\
wykres graficzQ\SUH]HQWXMF\]DZ *RQHSU]H]X*\WNRZQLNDGDQH]PDJD]\QXGDQ\FKPR*HE\ü
GRVW SQ\GODSR]RVWDá\FKX*\WNRZQików aplikacji.
5 Podsumowanie
.RPSRQHQW\ %XVLQHVV ,QWHOOLJHQFH %HDQV VWDQRZL GOD SURJUDPLVW\ -DYD LQWHUHVXMFH
rozwi]DQLH XPR*OLZLDMFH V]\EN L áDWZ EXGRZ DSOLNDFML DQDOLW\F]Q\FK RSHUXMF\FK QD
PDJD]\QLHGDQ\FKREVáXJLZDQ\PSU]H]2UDFOHL,PSOHPHQWDFMDWDNLFKDSOLNDFMLMHVWQLH]DOH*QDRG
weZQ WU]QHM UHSUH]HQWDFML GDQ\FK Z ED]LH GDQ\FK UHODF\MQD OXE ZLHORZ\PLDURZD = NROHL
wykorzyVWDQLHSURWRNRáX,,23MDNRPHFKDQL]PXNRPXQLNDF\MQHJRSR]ZDODQDIL]\F]QVHSDUDFM
warstwy aplikacyjnej od warstwy magazynu danych.
6 Literatura
[1] Oracle9i OLAP Services, Concepts and Administration Guide, Oracle
[2] Oracle9i OLAP Services, Developer’s Guide to Oracle OLAP API, Oracle
[3] Oracle9i Business Intelligence Beans, An Oracle White Paper