2012/11/17 José Manuel Peña P. <
josema...@gmail.com>:
Si en efecto. Lo que me llama la atención es que dice que es
relacional y objetos a la vez. habla de herencia múltiple y que la
interfaz en general es SQL. Por eso me parece que dijera PgSQL entre
líneas.
> Dudo mucho que tenga que ver con CouchDB, ya que esta es una BD orientada a
> documentos y no "objetos".
>
CouchDB almacena JSON que es realmente serialización de objetos, al
menos de los atributos de un objeto.
> Ahora bien, el problema es que no se conoce a casi nadie que haya trabajado
> con BD orientadas a objetos, sin embargo, teóricamente puede tener ventajas
> para aplicaciones de negocio tales como eliminar la llamada "impedencia
> objeto-relacional", en la cual un dato tiene que pasar por varias etapas
> antes de llegar al GUI.
>
Lo que hacemos nosotros es trabajar state-less/REST y combinar PgSQL y
CouchDB de la siguiente forma: el path de escritura (POST, PUT,
DELETE) llega al RDBMS y de allí triggers automáticamente serializan
JSON que se distribuye en Couch. Nosotros separamos MVC de Catalyst un
nivel más donde V realmente sigue siendo una capa de recursos JSON y
luego el View como tal corre netamente en el cliente que puede ser un
Browser (usando algo como JQuery + Jemplate) u otro tipo de clientes.
> En este link hay evidencia de este tipo de ahorro:
>
http://www.jpab.org/All/All/All.html. Claro que, este ahorro se da entre
> varias razones por que el manejador se ejecuta embebido, en el mismo proceso
> de la aplicación y por la inexistencia de la impedancia. Creo que la regla
> en general es que tu "manejador de BD orientada a objetos se ejecute en la
> misma VM" que tu aplicación, sea la plataforma que fuere (Java, Python,
> .NET, Perl, etc)
>
Si. Igual era Oracle con Forrms y todos sabemos como terminó eso. Yo
creo que toda esa vaina es pura paja y uno tiene que tener control
pleno de todas las capas para poder adaptar tu arquitectura y no
casarte con el último FAD.
> Por cierto, las BD no-sql como MongoDB, CouchDB, Riak, Cassandra, etc, se
> aprovechan también de un mapeo mas directo al ser BD orientadas a documentos
> o pares clave-valor, pero siguen teniendo la necesidad de utilizar
> comunicación entre procesos.
>
Para mí todo lo noSQL y "big data" no es más que un caché sofisticado.
Yo las veo y las uso para distribuir objetos serializados y no
"documentos". Nosotros, de hecho, usamos CouchDB como almacenaje y
distribución de objetos serializados en JSON. Ejemplo: cuando si
almacenamos una factura en PgSQL automáticamente creamos un objeto
JSON que es la versión des-normalizada y se distribuye para la ruta
GET. Si te pones a ver la mutabilidad de los registros de negocios es
mínima y por ende casi todos los documentos y registros
transaccionales de negocio no mutan y pueden vivir perfectamente fuera
del RDBMS, pero como complemento a éste último, no como substituto.
Más aún, típicamente hay entre 3 y 10 queries por cada insert/update.
El truco es analizar la vigencia del dato (vigencia del caché) según
el negocio en particular. Digamos, hay negocio que pueden tolerar que
el nivel de inventario en consulta esté desfasado unos minutos e
incluso horas, hay otros negocios en que no. Hay otros casos que es
igual, por ejemplo una factura una vez impresa es inmutable por
definición, por ende puede vivir por siempre en los caché.
> Ahora bien, debido a que lasBD no-sql orientadas a documentos han abandonado
> el inmenso poder existente en el álgebra relacional, se las han arreglado
> para mejorar el tema de la complejidad y performance de las consultas en
> noSQL (map-reduce y vistas indexadas), al costo de que hay que "programar"
> las consultas, pero por lo menos hay documentación y ejemplos de como
> hacerlas. Sin embargo, con todo y eso, no me atrevería a usar una noSQL en
> una aplicación transaccional.
>
Exactamente!!! Ni de vaina se pueden ver como substitutos a los RDBMS
sino como complementos para poder escapar del teorema CAP. Pero para
poder combinar ambas tecnologías debes modelar adecuadamente (pensar
en entidades que representen su propio estado, a.k.a. REST). Lo otro
que dices y que es muy cierto es que al final del día en noSQL la
complejidad se esconde en el map-reduce y estás trasladando el
problema a otro sitio. Cualquier cosa mas allá estarías solapando con
mundo BI (business intelligence) y no tiene sentido. Las BD noSQL son
cachés sofisticados.
> En el caso de las BD orientadas a objetos no tengo la menor idea de como se
> pueden manejar consultas complejas y estadísticas, y parece que no hay
> demasiada documentación al respecto.
>
Como tu dices, primero no son nada nuevas. Segundo, zapatero a su
zapato. Yo creo que a nivel le los lenguajes los ORM son lo mejor para
aislar al código. Yo creo (y coincido contigo plenamente) que el
almacenaje permanente va __mucho__ mas allá que solo darle
persistencia a los objetos de aplicación. Si fueran solo para eso ni
siquiera necesitaríamos bases de datos!!
En fin, mi pregunta sobre Intersystems es que si no te huele que eso
es algo como Pg + X behind the scenes??
Saludos,
--
Alejandro