Вы находитесь на странице: 1из 34

Arquitectura de Proyectos de IT

Arquitectura de Persistencia

Juan Arias Gustavo Brey Gastn Coco Nicols Passerini

2005

Qu es persistencia?
In computer science, persistence refers to the characteristic of data that outlives the execution of the program that created it.

Por qu es necesario?
Los datos en memoria se pierden La memoria es acotada

Arquitectura de Proyectos de IT

Problemas de persistencia
Performance
Acceso a disco Bsquedas Distribucin

Transformacin de los datos

Arquitectura de Proyectos de IT

Estrategias de Persistencia Archivos Bases de datos


Relacional Objetos Otras

Prevalencia Ortogonal

Arquitectura de Proyectos de IT

Archivos
XML Ancho fijo Csv DBF + IDX Archivos Indexados - VSAM Serializacin Snapshot
Smalltalk Self

Arquitectura de Proyectos de IT

Prevalencia
Caractersticas
Los datos se mantienen en memoria. Regularmente se hace un snapshot a disco

Implementaciones
Prevayler (Java) Bamboo (.Net) Madeleine (Ruby) Sprevayler (Smalltalk) Perlvayler (Perl)

Arquitectura de Proyectos de IT

Prevalencia
Ventajas
No hay transformacin, los datos se guardan en el formato que los usa el programa. Alto grado de transparencia. La performance es muchsimo ms alta.

Desventajas
La aplicacin debe poder ser contenida en memoria. Interoperabilidad. Falta la maduracin de un sistema hbrido.

Arquitectura de Proyectos de IT

Data Base Management Systems


Independencia de la forma en que se guardan fsicamente los datos Permite compartir la DB entre varios programas
Comunicacin, transacciones, lockeos, seguridad, etc.

Mecanismos para recuperarse si algo falla


Transacciones, logs, auditora, herramientas de backup

Permite establecer reglas de integridad


Valores invlidos Incoherencias o inconsistencias

Performance y escalabilidad
Grandes volmenes de datos o de transacciones

Puedo ejecutar cosas dentro de la base

Arquitectura de Proyectos de IT

Tipos de DBMS
En red Jerrquicas Relacionales Objetos Asociativas Multidimensionales

Arquitectura de Proyectos de IT

Bases de Datos Relacionales


Bases tericas
Algebra relacional (Ted Codd - 1970) Teora de conjuntos (Georg Cantor 1874) Lgica de predicados

Elementos
Tablas, relaciones, constraints, domains, keys Operadores relacionales Normalizacin

10

Arquitectura de Proyectos de IT

Bases de Objetos

11

Arquitectura de Proyectos de IT

Bases de Objetos

12

Arquitectura de Proyectos de IT

Bases de Objetos
Frameworks de persistencia
DB4O Omnibase (desapareciendo) EJB Entity Beans

Bases de Objetos
Gemstone Objectivity GOODS (Generic Object Oriented Database System)

Lenguajes de Consulta
OQL LINK

13

Arquitectura de Proyectos de IT

Bases de Objetos
Algunas clasificaciones
Activas / Pasivas Transformacin nativa / no nativa Embebidas

Reticencia a su uso
Interaccin con otras aplicaciones No parece tan sencillo cocinar datos Miedo

14

Arquitectura de Proyectos de IT

Bases de Objetos
Ventajas
Ms simple Ms rpido (trabajan con punteros en lugar de relaciones, navegacional en lugar de declarativo) Modificabilidad

Desventajas
Son ms rpidas para las bsquedas conocidas previamente. Desarrollos sobre mltiples plataformas. Interoperabilidad.

15

Arquitectura de Proyectos de IT

Multidimensionales
OLAP (cubos) Fact Table / Dimension Tables Vistas precalculadas, para las posibles agregaciones Grandes volmenes de datos a gran velocidad Datos histricos

16

Arquitectura de Proyectos de IT

NO-SQL
Surgen en parte para suplir limitaciones del modelo relacional
Escalabilidad Distribuidas por diseo Volumen de datos Esquemas flexibles Pueden o no implementar ACID

Tipos
Columns Key/Value Document

17

Arquitectura de Proyectos de IT

NO-SQL. Columns
Es parecido al modelo relacional, pero los datos son guardados ordenados por columna en lugar de por registro.
Las bsquedas son mucho ms rpidas Mas fcil calcular proyecciones relativas a una o pocas columnas. Es ms difcil realizar escrituras o consultas complejas (muchas columnas)

Ejemplos:
BigTable (Google) Hypertable

18

Arquitectura de Proyectos de IT

NO-SQL. Key/Value
La informacin se guarda organizado como un par clave/valor.
Tiene una alta flexibilidad, no es necesario modificar estructuras para agregar atributos. No es necesario lidiar con tipos de datos Es complicado hacer bsquedas por ms de un campo (AND y OR)

Ejemplos:
Cassandra (Facebook, Twitter, Digg) Tyrant

19

Arquitectura de Proyectos de IT

NO-SQL. Document
Guardan cualquier documento arbitrario, independientemente de la estructura.
Es mas fcil guardar estructuras que varan pese a referirse al mismo tipo de entidad. Suelen usar XML, YAML o JSON para retornar los datos a travs de un protocolo REST. No es tan fcil hacer consultas complejas (proyecciones, por ejemplo)

Ejemplos:
MongoDB (sourceforge, github) CouchDB

20

Arquitectura de Proyectos de IT

Estrategias de Uso
SQL Plano / Embebido / HQL / OQL Frameworks de persistencia
ORM No relacionales

Transparentes
Bases de Objetos Prevalencia Persistencia Ortogonal

21

Arquitectura de Proyectos de IT

SQL Plano
Muy difundido Inclusive desde la vista (por ejemplo JSP) Puede ser manual o generado Normalmente se introduce a travs de strings

22

Arquitectura de Proyectos de IT

SQL Plano - Variantes


Stored Procedures Vistas Triggers SQL Embebido
Pro*C RPG

Herramientas de Reporting
Jasper Reports

Externalizacin
XML

DAO

23

Arquitectura de Proyectos de IT

SQL Plano Ventajas


Es facil generar diferentes vistas de los datos. El clasico "mostrame este y este dato en la pantallita". O "modificame solo este campito No necesitan generar abstracciones ni modelo. (esto no es una ventaja, pero si somos cortoplacistas, sale con fritas. Recordar RAD) Facilita la generacin de Reportes (cuando son datos "cuadrados").

24

Arquitectura de Proyectos de IT

SQL Plano Desventajas


NO se generan abstracciones ni modelo!!! La lgica de negocio se entremezcla en los INSERT / UPDATES / DELETE La lgica se hace parte de la infraestructura. Triggers y su promiscuidad oculta -> tocan los datos, se meten en la lgica. Y encima es oculta, NO es explcita.

25

Arquitectura de Proyectos de IT

Mapeo Objetos-Relacional
Permite concentrarse en el negocio Puede tener problemas de performance. Ejemplos
Hibernate / NHibernate Castor JDO TopLink

Dos niveles
Mapeador de objetos Framework de persistencia.

26

Arquitectura de Proyectos de IT

Alternativa: Active Record

Simplifica el uso de un ORM


Convention over configuration Table per class Behavioral complete

Ejemplos
Ruby on Rails

27

Arquitectura de Proyectos de IT

Impedance Mismatch (I)


Conversiones de tipos Imposibilidad de refactor, no hay entornos integrados. Inflexibilidad de las tablas, no polimorfismo. Herencia Identidad vs. Clave Primaria. Unicidad

28

Arquitectura de Proyectos de IT

Impedance Mismatch (II)


Interfaces de datos vs. interfaces de comportamiento Relaciones bidireccionales, navegabilidad, consistencia, relaciones inversas. En realidad esto de a poco se va solucionando Ausencia del concepto de proyeccin Declarativo vs. Imperativo (4GL vs. 3GL)
Manejo de conjuntos versus iteracin. Conjuntos por comprensin.

29

Arquitectura de Proyectos de IT

Qu significa transparente? (I)


Cmo y dnde persistir? Qu objetos persistir
Persistence by Reachability

Qu objetos traer del repositorio persistente


Lazy Resolucin mltiples Eliminacin

30

Arquitectura de Proyectos de IT

Qu significa transparente? (II)


Lenguaje de interaccin con el repositorio persistente Lenguajes embebidos Mismo lenguaje de programacin Transacciones

31

Arquitectura de Proyectos de IT

Qu significa transparente?

(III)

Pero entonces cmo funciona? Programtica Declarativa Automtica / Inteligente / Heurstica Transparente para quin? Servicios Objetos de negocio Presentacin

32

Arquitectura de Proyectos de IT

Combinando esquemas de persistencia


Para qu pueden servir cada una de las formas de persistencia. Cmo combinarlas?
Prototipado Para guardar informacin de configuracin no hace falta una base de datos. Una persistencia bien objetosa podra ser til para una configuracin ms feliz. Otra posibilidad es que la configuracin sea cdigo. La base est buena para datos que son muchos y cuadrados. Si son muchos y complicados entonces es un problema.

33

Arquitectura de Proyectos de IT

Otros problemas de persistencia


Cachs Distribucin del acceso a los datos Distribucin de los datos Transaccionalidad
Entre mltiples repositorios de datos.

34

Arquitectura de Proyectos de IT

Вам также может понравиться