Upload
anthony-sotolongo
View
76
Download
0
Embed Size (px)
DESCRIPTION
extensiones de postgresql para acceder a BD mongoDB y couchDB
Citation preview
• Introducción a NoSQL.
• Características de mongoDB y couchDB.
• PostgreSQL y las NoSQL.
• Extensiones en PostgreSQL.
• Pgpymongo y Pgpycouch.
Como se clasifican
NOSQL tendencias actuales en el uso de TI (Qcon,2012)
Clasificación *
* Von der Weth. (2012) C.; Datta, A. Multiterm Keyword Search in NoSQL
Systems, Internet Computing, IEEE
CassandraBIGTABLE
CouchDBmongoDB
Redis y Hbase
Documentos en
formato JSON
• Tipo de dato Hstore
• Tipo de dato Hstore
audit_log-> Jaime Casanova
• Tipo de dato Hstore
audit_log-> Jaime Casanova
• FDW para Redis y couchDB
(extensiones).
• Tipo de dato Hstore
audit_log-> Jaime Casanova
• FDW para Redis y couchDB
(extensiones).
Descargar de www.pgxn.org
93 Extensiones
9 extensiones de FDW
• Multicorn (python extension)
Permite crear FDW desde python
• Permiten agregar al gestor nuevas
funcionalidades, suelen incluir múltiples
objetos de SQL, por ejemplo, un nuevo
tipo de datos o nuevas funciones. 35.15.
Packaging Related Objects into an
Extension
• Dos archivos como mínimo
.control .SQL
• Incluirlas en directorio extension.
CREATE EXTESION nombre_de_extensión
• pgmongo.control
# extension
comment = 'extension …postgresql'
default_version = '0.1‘
superuser = true
• pgmongo--0.1.SQL
Clásicos comandos SQL(DDL,DCL,DML)
AppApp gestión de
información
¿?
AppApp gestión de
información
Pgpymongo.
AppApp gestión de
información
Pgpymongo y Pgpycouch.
Lenguaje Plpython.
Funcionalidades de las extensiones.
Gestión de una Base de datos (creación,
eliminación, obtención).
Gestión de documentos (creación,
eliminación, modificación y obtención).
Ejecución de funciones Map/Reduce.
Listado de funciones.
• collectionfind: Buscar documentos en una
colección.
• collectionfindone: Buscar un documentos
específico en una colección.
• collectioninsert: Insertar un documento en una
colección.
• createcolleccion: Crear una colección.
• createdb: Crear una base de datos.
• getdatabases: Obtener las bases de datos.
CREATE OR REPLACE FUNCTION
pgpymongo.createdb(pserver text, pport integer,
pname text)
RETURNS text AS $$
from pymongo import Connection
#servidor puerto
servidor=Connection(pserver,pport)
for bd in servidor.database_names():
if bd == pname:
return ""“La BDs ya existe!!!"""
servidor[pname].collection_names()
return 'Base de datos creada : '+ str(servidor[pname])
$$ LANGUAGE plpythonu VOLATILE;
Ejemplos:
select pgpymongo.createdb('localhost', 27017, 'nueva')
Resultado- "Base de datos creada: -
Database(Connection('localhost', 27017), u'nueva')“
select pgpymongo.collectionfindone('localhost', 27017,
'nueva', 'micoleccion','{"valor2":"prueba"}')
Resultado-"{u'valor1': 1, u'valor2': u'prueba', u'_id':
ObjectId('5027cbf32229710460000002')}"
select pgpymongo.collectioninsert('localhost', 27017,
'nueva', 'micoleccion', '{"valor1":2,"valor2":"prueba2"}')
Resultado- "5027cbf32229710460000003"
• Existe un uso creciente de las bases de datos
NoSQL.
• Se evidenció la capacidad de extensibilidad
que tiene PostgreSQL incluso en otros
lenguajes diferentes al que fue creado.
• Pgpymongo y Pgpycouch ejemplos de
extensiones para PostgreSQL.