Upload
dinhkiet
View
223
Download
0
Embed Size (px)
Citation preview
Tema5.ArquitecturadelasaplicacionesconaccesoaBD
DesarrollodeSistemasdeInformación
MartaElenaZorrillaPantaleónDPTO.DEMATEMÁTICAS,ESTADÍSTICAY
COMPUTACIÓN
EstetemasepublicabajoLicencia:CreaIveCommonsBY‐NC‐SA3.0
UC‐MartaZorrilla
REFERENCIAS
Libros
ScoOW.Ambler.TheDesignofaRobustPersistenceLayerFor
RelaIonalDatabases.2005hOp://www.ambysoZ.com/downloads/persistenceLayer.pdf
ClintonBegin,BrandonGoodin,LarryMeadors.iBaIsinacIon.
NewYork:Manning,cop.2007.
CésardelaTorreetal.GuíadeArquitecturaN‐CapasDDD.NET
4.0.KrassisPress,2011
2
UC‐MartaZorrilla
REFERENCIAS
Recursosweb
iBaIshOp://ibaIs.apache.org/
HibernatehOp://www.hibernate.org/
ComparaIvaFrameworks:hOp://crowdranking.com/crowdrankings/t420g0‐‐best‐java‐persistence‐frameworks
DataSkillsforAgileSoZwareDeveloperhOp://www.agiledata.org/essays/developerSkills.html
EncapsulaIngDatabaseAccess:AnAgile"Best"PracIcehOp://www.agiledata.org/essays/implementaIonStrategies.html
ScoOAmbler'sArIclesandOtherWriIngshOp://www.ambysoZ.com/onlineWriIngs.html
ComparisonandBenchmarksonORMBaOle.NEThOp://ormeter.net/
3
UC‐MartaZorrilla
INTRODUCCIÓN
Mayoritariamente,losSistemasdeInformaciónhacenusodebasesdedatosrelacionalesparalapersistenciadesusdatos.EnmenormedidaseusanBDorientadasaobjetoy/uObjeto‐relacionales.YestátomandorelevancialasBDXML,comoconsecuenciadelintercambiodedatosyestándaresdelaindustria.
SQL,estándardesde1987,esellenguajedeinterrogaciónydefiniciónampliamenteadoptado.Hasidoextendidoparaabordarelmodeladodelosdatosobjetual(OR)ysemi‐estruturado(XML).Envigor,estándarSQL:2008.
Limitaciones:sólounapartedeSQLesrealmenteestándarcuandotrabajascondisIntosgestoresdeBD
Afavor:declaraIvo,potente,ampliamenteuIlizado
4
UC‐MartaZorrilla
INTRODUCCIÓN
Porotraparte,lossistemasdeinformaciónsevenmuyafectadosporloscambiosnormaIvosyorganizaIvosdelascorporaciones,loqueconllevaacambiosenlosrequisitosyconInuasadaptacionesenelsoZware.
ParalelamentelastecnologíasnoparandeavanzarydeproponergrancanIdaddealternaIvasquepermitenconstruiraplicaciones,quesiguiendounaarquitecturamodular,seadaptenmuybienadiferentesescenarios.
¿Cómoabordarlo?
Analicemoslahistoria
5
UC‐MartaZorrilla
REVISIÓN HISTÓRICA 6
Ges=óndedatos Ges=óndedatos Ges=óndedatos Ges=óndedatos Ges=óndedatos Ges=óndedatos
Procesamiento Procesamiento Procesamiento Procesamiento
Presentación Presentación
Procesamiento
Presentación
Procesamiento
PresentaciónPresentaciónPresentación Presentación
Procesamiento
Desdelosaños80hastalaactualidadlaarquitecturadelasaplicacionessehaidomodificandopasandodesdeunaarquitecturacentralizada(todoenelhost)aunadistribuida,enelquesereparteelaplicaIvoenvariasmáquinas(clienteyservidores)aprovechandoasílascapacidadesgráficasydecómputodecadaIpodeequipo
Persistencia
UC‐MartaZorrilla
LAYERS AND TIERS
EsimportantedisInguirlosconceptosde“Capas”(Layers)y“Niveles”(Tiers)
LasCapas(Layers)seocupandeladivisiónlógicadeloscomponentesqueconsItuyenelsoZware,ynoIenenencuentadóndeestaráubicadosvsicamente.
LosNiveles(Tiers)serefierenalosdisIntosequiposendondeloscomponentessoZwaresedesplegarán.
Ambosusannombressimilares(presentación,proceso/servicio,negocioydatos),peroesimportantenoconfundirlos.
7
UC‐MartaZorrilla
CARACTERÍSTICAS DE LAS APLICACIONES
Aplicacionescentralizadas(1Ier)(desde1970a..):
Interfacesorientadasatexto
DesarrolladoprincipalmenteconCobol,ylenguajes4GLqueembebíanellenguajeSQLdelgestordeBD(Informix‐4GL,Oracle,etc.)
Aplicacioneseficientes,ágiles,peropocousables
2Ier(1990‐95):
Interfacesgráficasenclienteconcapacidaddeprocesamiento.
SebasabaenlainvocacióndeinstruccionesSQLdesdecliente.Avecesestasinstruccioneseranprocedimientosalmacenadosque,incluíannosóloelSQLsinotambiénlógicadenegocio.Sellevabatodoelcómputoalservidor.
RecordemosquelosprocedimientosalmacenadossiguenlenguajeprocedimentalynodeclaraIvo.Impideportabilidad.
Lasaplicacionespresentabanproblemasdeescalabilidadyrendimientoysudespliegueeraunalocura“elinfiernodelasdlls”
Herramientas:VB,PowerBuilder,OracleForms,…conAPIODBC.Prob.Conelpooldeconexiones
8
UC‐MartaZorrilla
CARACTERÍSTICAS DE LAS APLICACIONES
3‐IeroN‐Ier(1994‐…): Interfaces“thin”y“thick” SurgenconlallegadadeInternetyelprotocolohOp. Sedividelaaplicaciónencapadepresentación,denegocioyde
datos. Losprocedimientosalmacenadossellevanalacapadenegocios
(comollamadasaprocedimientosremotos)dondesemejoraelrendimientoconunagesIónmásopImizadadelpooldeconexionesylosrecursosdegestor.
EstossonmuyeficientesencuantoaquemanipulanlainformaciónqueestáenelpropiogestorperosonmásdivcilesdeescribiryprobarpuesnoestánligadosalasmetodologíassoZwareactuales(orientadasaobjetosvistosdesdelaperspecIvadeaplicación).
AlgunosgestoresyapermitenlaprogramacióndeprocedimientosenjavaoC#peroesunparchequesoloresuelvelaportabilidaddelaBD.
9
UC‐MartaZorrilla
CARACTERÍSTICAS DE LAS APLICACIONES
3‐IeroN‐Ier(1994‐…): InlineSQL:aconInuaciónaparecieronlenguajescomoSQLJ
(estandarizadoenSQL2003)queembebíainstruccionesSQLenjavaperonohasidomuyuIlizado. SQLnoestándary,portanto,nosepuedehacerunparser
general
Necesidaddeunprecompilador
DificultadparaintegrarloenlosIDEdedesarrollo
DynamicSQL:resuelveelproblemadelprecompilador,escribiendoelSQLenunstring.EstorequiereunaAPIparaconfigurarlosparámetrosyrecuperarlosdatos(JDBC,ADONet) Ventaja:flexibilidadparaconstruirdinámicamentelasSQLs
Inconveniente:muchocódigorepeIIvocadavezquequieresejecutarunaconsulta.AdemáselSQLpuedevenirconcatenadoloqueresultadivcildeleerymantener
10
UC‐MartaZorrilla
EJ. SQLJ Y JDBC 11
SQLJ
estándar estático
#sql [ctx] { SELECT MAX(SALARY), AVG(SALARY) INTO :maxSalary, :avgSalary FROM DSN8710.EMP };
JDBC
no estándar dinámico
PreparedStatement stmt = conn.prepareStatement( "SELECT MAX(SALARY), AVG(SALARY)“ + " FROM DSN8710.EMP"); rs = stmt.executeQuery(); if (!rs.next()) { // Error -- no rows found } maxSalary = rs.getBigDecimal(1); avgSalary = rs.getBigDecimal(2); if (rs.next()) { // Error -- more than one row found } rs.close(); stmt.close();
UC‐MartaZorrilla
CARACTERÍSTICAS DE LAS APLICACIONES
3‐IeroN‐Ier(1994‐…): Actualmente,lasoluciónadoptadaesdiseñarunacapaque
realiceelmapeoobjeto‐relacional.
SussiglasORMserefierenalmapeodeobjetosdelsoZwaredeaplicaciónarelacionesotupasdelmodelorelacionalparasupersistenciayrecuperaciónposterior.
SuusoseexIendetambiénaotrastecnologíasnorelacionales(BDXML,ficheros,etc.)
Ventajas: MuchasherramientasORMgenerancódigoSQLdirectamente,
realizanconvenientementelagesIóndetransacciones,ofrecenposibilidadesdecaching
Algunas,estándiseñadasconciertasreglasqueobliganaquelaBDestánormalizadaperfectamente,loqueinfluyenegaIvamenteensurendimiento.MuchasempresasconstruyensupropioORM.
12
UC‐MartaZorrilla
ARQUITECTURA LÓGICA
User‐interfaceclassesshouldnotdirectlyaccessyourpersistencemechanisms.
Domainclassesshouldnotdirectlyaccessyourpersistencemechanisms.
Theclass‐typearchitectureisorthogonaltoyourhardware/networkarchitecture
13
UC‐MartaZorrilla
ARQUITECTURA FÍSICA
Classtype StandAlone Fat‐client Thin–client N‐=er
UserInterface Client Client Client Client
Controller/process
Client Client Server ApplicaIonserver
Domain/business
Client Client Server ApplicaIonserver
Persistence Client Server Server DatabaseServer
System Client Allmachines Allmachines Allmachines
14
2Ier‐c/s 3Ier‐c/s1Ier‐c/s
UC‐MartaZorrilla
NECESIDAD DE LA CAPA DE PERSISTENCIA
Persistenciaeslacapacidaddeunlenguajedeprogramaciónoentornodedesarrollodeprogramaciónpara,almacenaryrecuperarelestadodelosobjetosdeformaquesobrevivanalosprocesosquelosmanipulan.
¿Esnecesaria?Si,debidoaldesajustedeimpedanciaentreelmodelodedatosdelosparadigmasdeprogramaciónorientadosaobjetosyeldelosgestoresdebasesdedatos(relacionales,OR,xml,etc).Paraelcasorelacional,
Modelodeobjetos(objetosconatributos,métodosyrelacionesconotrosobjetos)debedescomponerseenvariastablas(deacuerdoalasrelaciones1:NyN:M)paraalmacenarseysurecuperaciónrequierevariosJOINs
EnlosgestoresrelacionaleselaccesoesasociaIvo,estoes,basadoenelcontenido(valordeclave)ynonavegacional,basadoenelmovimientoentreregistrosindividuales.
LosgestoresproveeIposdedatosquenoIenenloslenguajesdeprogramaciónOO(p.ej.Interval,Date).
15
UC‐MartaZorrilla
REQUISITOS A CUMPLIR
Lacapadepersistenciaencapsulaelcomportamientonecesarioparaescribir,recuperar,actualizaryborrarobjetos(delaaplicaciónsoZware)a/desdeelgestordealmacenamientopersistente(relacional,XML,ficheros,etc.).
Estadebesoportar,deacuerdoaScoOAmbler(2005): Diferentesmecanismosdepersistencia(relacional,XML,ficheros,etc.). Encapsulacióncompleta:nodebesernecesarioescribirningunalíneade
códigoqueaccedaalgestordepersistencia,debensersuficientelosmétodosdefinidosenlacapadepersistencia
AccionessobrevariosobjetosalIempo(borrarvariosobjetosoconsultarlos,etc.)
Transaccionessimplesyanidadas(todoonadaoconcommitparcial) Extensibilidad:fácilparasusItuirlosmecanismosdepersistencia
existentesypoderincorporarnuevascaracterísIcas
IdenIdaddeobjetospersistentes:lacapadepersistenciadebeasociarunidenIficadoracadaobjetopersistentequesirvaparalocalizardeformaunívocaelobjetoguardadoenelgestordepersistencia
16
UC‐MartaZorrilla
REQUISITOS A CUMPLIR
Estadebesoportar(cont.):
Cursores:debepoderrecuperarelnúmerodeobjetosquesele
pidanyevitarelmanejodevolúmenesgrandesdedatos
Proxies:complementaalcursor,unobjetoquerepresentaaotro
perosintraerloamemoriahastaquesesoliciteexpresamente
MúlIplesarquitecturas:debepoderadaptarseacualquierIpode
arquitectura(centralizada,c/s,n‐capas)
Diferentesgestores:siseproduceuncambiodegestorlasaplicacionesnosevenafectadas
MúlIplesconexiones:debepermiIrabrirconexionesadiferentes
basesdedatosdentrodeunamismaaplicación
SuporteadriversnaIvosynonaIvos(JDBC,ODBC,…)
ConsultasSQL:aunquesedebeevitarelSQLenelcódigoOO,en
ocasionesesnecesarioporrendimientoydebepermiIrse.
17
UC‐MartaZorrilla
MECANISMOS DE PERSISTENCIA
AccesodirectoaBD.ImplicaelusodirectodelaBDhaciendousodeunainterfazestandarizadayunlenguajedeconsultasoportadoporelgestor.Noexistecapadepersistenciaentreelgestorylaaplicación.
Mapeadores:mecanismosquesebasanenlatraducciónbidireccionalentrelosdatosencapsuladosenlosobjetosdelalógicadeunSistemaOOyelmodelodedatosdelafuentededatos.Elmapeadoreselencargadoderealizarlaconversiónentreparadigmas,biendeformamanualoautomáIca.
Generadoresdecódigo:usarherramientasgeneradoresdecódigobasadasenpatronespararesolverlapersistencia,centrándoseeldesarrolladorenelcódigoqueresuelvelalógicadenegocio.
19
UC‐MartaZorrilla
MECANISMOS DE PERSISTENCIA
Orientaciónaaspectos:paradigmaorientadoamodularizarlasaplicacionesendeterminadosconceptos,unodeelloseslapersistencia
Lenguajesorientadosaobjetos:uIlizarfuncionalidadesdepersistenciaprovistasporelpropiolenguajedeprogramaciónevitandolainclusióndeframeworks.
Libreríasestándarusandotécnicascomolaserializacióndeobjetos(nogesIonatransaccionesniincorporalenguajesdeconsulta);lenguajesqueproveanpersistenciaousandolenguajesqueintegrenunlenguajedeconsultasobreelsistemapersistentecomoOQL,HQL.
Prevalencia,técnicaparahacerpersistenteslosdatosqueestánenmemoriappal.usandotécnicasdeserialización.Manejantransaccionesypuedenrecuperarunestadoestablesicaeelsistema.
20
UC‐MartaZorrilla
FRAMEWORKS DE PERSISTENCIA
Frameworkesunconjuntodelibreríasoclasesqueproporcionaunainfraestucturaqueactúadesoporteparadesarrollaraplicaciones.Estoes,esunesquemaopatrónparaeldesarrollodeunaaplicacióncompletaodeunaparteespecíficadelamisma.
Losframeworks,adiferenciadeunconjuntodelibrerías,ofrecenunaseriedeserviciosparaimplementarelartefactosoZwareocultandosucomplejidadalprogramadoryahorrandoIempodeprogramación.Porotraparte,estámáslimitadouncambioensufuncionalidad.
Frameworkdepersistenciaesunmarcodetrabajoquesesitúaentrelalógicadenegocioylacapadebasededatos,abstrayendounodelotro.
21
UC‐MartaZorrilla
FRAMEWORKS PARA JAVA
IbaIs: MyBa=sisapersistenceframeworkavailableforJavaand.NETthat
couplesobjectswithstoredproceduresorSQLstatementsusinganXMLdescriptororannotaIons.
Hibernate: Hibernateisanobject‐relaIonalmapping(ORM)libraryfor
theJavalanguage,providingaframeworkformappinganobject‐orienteddomainmodeltoatradiIonalrelaIonaldatabase.
OpenJPA: OpenJPAisanopensourceimplementaIonofthe
JavaPersistenceAPIspecificaIon.Itisanobject‐relaIonalmapping(ORM)soluIonfortheJavalanguage,whichsimplifiesstoringobjectsindatabases
EclipseLink EclipseLinkistheopensourceEclipsePersistenceServicesProjectfrom
theEclipseFoundaIon.ThesoZwareprovidesanextensibleframeworkthatallowsJavadeveloperstointeractwithvariousdataservices,includingdatabases,webservices,ObjectXMLmapping(OXM),andEnterpriseInformaIonSystems(EIS).EclipseLinksupportsanumberofpersistencestandards
22
UC‐MartaZorrilla
OTROS FRAMEWORKS PARA JAVA
Torque
Castor
OJB
Cayenne
JDBM
PBeans
SimpleORM
JULP(JavaUltra‐LitePersistence)
Smyle
Speedo
XORM
JDBCPersistence
JDOGenie
LiDO
JDOToolkit
FronIerSuite
Jrelay
IntelliBO
kodoJDO
….
23
UC‐MartaZorrilla
OTROS FRAMEWORKS PARA NET
Sqlclient
EnItyFramework
LINQtoSQL
BTLToolkit
DataObjects.Net
LinqConnect
Nhibernate
OpenAccesss
Etc….
24
UC‐MartaZorrilla
IBATIS
iBaIsesunframeworkquefacilitaeldiseñodelacapadepersistenciauIlizadaenlasaplicacionesJavaparaaccederanuestrorepositoriodedatos.
iBaIsunelosObjetosconlassentenciasSQLmedianteundescriptorXML.
iBaIsnecesitaunoomásficherosconlassentenciasSQLqueusaráelprograma
IbaIsnecesitaunficherodeconfiguraciónenXMLdondeseindiquenlosparámetrosdeconexiónalabasededatosylosficherosdemapeoXML
25
UC‐MartaZorrilla
HIBERNATE
HibernateesunaherramientadeMapeoobjeto‐relacionalparalaplataformaJava(ydisponibletambiénpara.NetconelnombredeNHibernate)quefacilitaelmapeodeatributosentreunabasededatosrelacionaltradicionalyelmodelodeobjetosdeunaaplicación,mediantearchivosdeclaraIvos(XML)quepermitenestablecerestasrelaciones.
Hibernatenorequiereconocerelmodelodedatosalcualseaccede.SeIeneunaaplicaciónOrientadaaObjetosyélmapeaeldiseñoOOenunacapadepersistencia.
LamayordiferenciaentreHibernateeiBATISprovienedelhechodequeelúlImobasasufuncionamientoenelmapeodesentenciasSQLqueseincluyenenficherosXML.Esosignificaque,alcontrarioqueHibernate,requiereconocimientodeSQLporpartedelprogramador.Porotraparte,permitelaopImizacióndelasconsultas,yaseaconlenguajeestándaroconSQLpropietariodelmotordebasededatosuIlizado.ConiBATIS,siempresesabeloqueseestáejecutandoenlabasededatosypermitegenerarconsultasdinámicasmuypotentes.
26
UC‐MartaZorrilla
HIBERNATE VS IBATIS
HibernatefacilitaeldesarrolloalnotenerporquetenerconocimientoalgunoacercadeSQL,perosedesaconsejaparadesarrollosenlosqueladefinicióndelmodelodedatosestáyadefinidoosilasrelacionesenelmodelodedatosvanasercomplejas.
Porotraparte,HibernatealuIlizarsupropiolenguajedeconsultadedatos,loconvierteenmulImotordebasededatos.
IbaIssoportalaposibilidaddealmacenarconsultasenlacaché(usaOpenSymphonyCache)ypooldeconexiones(usaYacarta).
EndefiniIva,HibernateseparamáslacapadenegocioypersistenciaqueIbaIsenlaqueeldesarrollador“define”elenlace(menosniveldeabstracción).
UsaremosIbaIsenlasprácIcas.
27