Secciones
Conferencia de Álvaro Herrera - Postgresql
(19:28:52) El tema de #solar es: Bienvenidos al canal IRC de Solar -
jueves 11/5 conferencia "PostgreSQL" - A. Herrera -
http://www.solar.org.ar/breve.php3?id_breve=321
(21:20:25) Tauro: Buenas noches, es para mi un honor y un placer
(21:20:41) Tauro: darles la bienvenida a la conferencia de esta noche.
(21:20:50) Tauro: En primer lugar, quiero agradecer profundamente a Alvaro
(21:21:00) Tauro: el haber aceptado la invitacion a exponer en nuestra "casa"
(21:21:09) Tauro: pero tambien quiero agradecerle por el inmenso aporte
(21:21:19) Tauro: que nos regala en el proyecto Postgresql que hoy nos ocupa,
(21:21:30) Tauro: y su entrega para con toda la comunidad.
(21:21:45) Tauro: En segunda instancia, agradecer a todos los que hoy
se acercaron
(21:21:48) haroldo: me solidarizo con todo lo que dice Tauro
(21:21:54) Tauro: aqui para compartir esta charla con nosotros.
(21:22:09) Tauro: gracias haroldo
(21:22:17) Tauro: Quiero recordar la modalidad que caracteriza las
charlas en nuestro ciclo:
(21:22:28) Tauro: En primer lugar, escuchamos todos atentamente al expositor.
(21:22:37) Tauro: Al finalizar su charla, y de manera ordenada para
(21:22:43) Tauro: claridad de la misma, podemos hacer preguntas
(21:22:52) Tauro: "levantando la mano".
(21:23:01) Tauro: Esto lo logramos escribiendo en nuestro cliente IRC
(21:23:11) Tauro: "/me pregunta" (sin las comillas),
(21:23:23) Tauro: el moderador o expositor ira otorgando la palabra.
(21:23:24) ***haroldo entendio
(21:23:38) Tauro: Ahora si, pido un fuerte aplauso para Alvaro y lo
escuchamos atentamente :=) (clap, clap)
(21:23:46) LUGna: clap clap clap clap
(21:23:47) LUGna: clap clap clap clap
(21:23:48) LUGna: clap clap clap clap
(21:23:48) a1ex: clap, clap, clap
(21:23:48) ***haroldo aplaude
(21:23:52) nmag: (clap, clap)
(21:23:54) ftoledo: lluvia de claps!
(21:24:00) ccheddi: clap clap clap
(21:24:02) Mirko: a lot of claps
(21:24:03) markito: clap clap
(21:24:05) Fabrix_: hola bufas
(21:24:09) alvherre: Ok, hola a todos
(21:24:11) haroldo: viva chile mierda !
(21:24:16) alvherre: Primero que nada muchas gracias Ricardo por invitarme
(21:24:43) Tauro: un honor
(21:24:54) alvherre: es grato estar en una sala dando una conferencia
ante tanta gente que esta ahi voluntariamente
(21:25:17) alvherre: gracias tambien Haroldo ;-)
(21:25:34) alvherre: quiero hacer una precision con respecto a la
modalidad que Tauro señalaba
(21:25:36) haroldo: alvherre, gracias a ti por todo como siempre.
(21:25:54) alvherre: creo que prefiero que si se permita hacer
preguntas durante la charla
(21:26:08) alvherre: pero me reservo el derecho de contestarlas de inmediato
(21:26:09) Tauro: ok señor aceptado!
(21:26:23) alvherre: si no contesto una pregunta de inmediato,
probablemente quiere decir que la contestare mas tarde.
(21:26:38) alvherre: si se me olvida, entonces me la preguntaran otra
vez al final ;-)
(21:26:41) alvherre: bien
(21:26:50) sko6er: gogo
(21:26:58) alvherre: Asumo que muchos aca ya saben que es Postgres
(21:27:06) alvherre: pero lo indico de todas formas
(21:27:17) alvherre: PostgreSQL es un sistema de gestion relacional de datos
(21:27:32) alvherre: de codigo fuente abierto, "software libre"
(21:27:52) alvherre: es el gestor de datos relacional mas avanzado del mundo
(21:28:03) alvherre: por que se dice que es el mas avanzado?
(21:28:53) alvherre: bien, Postgres tiene una historia que empieza en 1977
(21:29:09) alvherre: contemporaneo con los primeros esfuerzos de IBM
de crear un sistema relacional
(21:29:22) alvherre: Ingres era un proyecto de la U de Berkeley en
California (la UCB)
(21:29:30) alvherre: liderado por el prof. Stonebraker
(21:29:50) alvherre: eventualmente Ingres "quedo chico"
(21:29:59) alvherre: y Stonebraker tuvo que comenzar un nuevo proyecto,
(21:30:12) alvherre: a partir de la experiencia adquirida en la
construccion de Ingres
(21:30:21) alvherre: a este proyecto, POST-inGRES, se le llamo POSTGRES
(21:30:42) alvherre: Stonebraker continuo con POSTGRES hasta el año 94
(21:31:02) alvherre: en que la UCB decidio terminar el proyecto porque
les estaba consumiendo demasiados recursos darle soporte al sistema
(21:31:39) alvherre: en el intertanto, fueron naciendo varias empresas
que vendian versiones derivadas de Ingres y de Postgres
(21:31:49) alvherre: No conozco la historia de ellas y creo que no es relevante,
(21:32:07) alvherre: pero hoy en dia Computer Associates ha hecho algo
de ruido con la liberacion como codigo abierto de Ingres.
(21:32:22) alvherre: Ellos por supuesto dicen que Ingres es el sistema
relacional de codigo abierto mas avanzado que existe
(21:32:27) alvherre: pero nosotros discrepamos :-)
(21:32:35) alvherre: por que discrepamos?
(21:33:02) alvherre: En el año 1995, un par de estudiantes de
Berkeley (o egresados de UCB, no estoy seguro) decidieron tomar
POSTGRES y portarlo al lenguaje SQL,
(21:33:08) alvherre: el cual estaba siendo muy popular
(21:33:21) alvherre: Anteriormente, Postgres usaba un lenguaje de
consultas propio llamado POSTQUEL
(21:33:27) alvherre: pero eso no es importante.
(21:33:55) alvherre: Lo importante es que los dos estudiantes
liberaron Postgres95, como lo llamaron,
(21:34:12) alvherre: para que el publico general tuviera acceso a un
sistema SQL libre y abierto.
(21:34:22) alvherre: Era, por supuesto, un producto lleno de limitaciones,
(21:34:29) alvherre: errores, no era muy rapido ...
(21:34:36) alvherre: pero tenia una comunidad fiel de seguidores
(21:34:49) alvherre: que lo tomaron y lo continuaron desarrollando.
(21:35:00) alvherre: Este nuevo grupo estaba disperso alrededor del mundo
(21:35:11) alvherre: Rusia, Alemania, Japon, EEUU
(21:35:30) alvherre: por lo que llamaron al grupo "PostgreSQL Global
Development Group"
(21:35:38) ***haroldo pregunta
(21:35:46) alvherre: que son quienes hoy en dia dirigen el desarrollo
del sistema
(21:36:05) alvherre: quien da la palabra, yo o el moderador?
(21:36:11) alvherre: bueno, haz tu pregunta Haroldo :-)
(21:36:16) Tauro: tu :)
(21:36:34) haroldo: la pregunta es si sigues en contacto con el
fabuloso desarrollador ruso vadim mikheev
(21:36:44) alvherre: ok
(21:36:56) alvherre: Bueno, en el grupo estaba Vadim Mikheev
(21:37:02) alvherre: quien es un tipo realmente increible
(21:37:15) alvherre: el fue quien dio a Postgres un monton de las
capacidades de que hoy en dia nos vanagloriamos:
(21:37:31) alvherre: subselects, WAL, ... no me acuerdo que mas en este momento
(21:37:56) alvherre: lamentablemente Vadim abandono el bote hace unos
años, no se muy bien por quÃ(c) (no lo dijo al irse)
(21:38:24) alvherre: para ser franco, sólo una vez tuve contacto con
Ã(c)l y fue para preguntar algo sobre el sistema de replicacion que
PostgreSQL Inc. habia construido
(21:38:34) alvherre: no he vuelto a saber de el
(21:39:04) haroldo: gracias
(21:39:06) alvherre: es una lastima que se haya ido pues yo diria que
Postgres seria aun mas increiblemente superior a lo que ya es si el
siguiera trabajando
(21:39:16) alvherre: en fin
(21:39:18) alvherre: Entonces
(21:39:38) alvherre: PostgreSQL es el sistema de gestion de datos mas
avanzado del mundo
(21:39:40) alvherre: eso ya lo dije
(21:39:45) alvherre: pero por que lo digo?
(21:39:59) alvherre: PostgreSQL primero que nada se desarrolla de manera abierta
(21:40:04) alvherre: como un buen proyecto de software libre
(21:40:14) alvherre: como Linux, como Gnome, como KDE
(21:40:22) alvherre: esto hace que su grupo de desarrollo sea diverso
(21:40:27) alvherre: y tenga intereses variados
(21:40:41) alvherre: esto hace que haya muchos frentes distintos por
los cuales avanza,
(21:40:45) alvherre: y muchas maneras de ver los problemas,
(21:40:52) alvherre: y muchos distintos problemas.
(21:41:09) alvherre: Esto a su vez hace que Postgres vaya mejorando de
una manera holistica, y sin seguir presiones de mercado
(21:41:31) alvherre: y sobre todo, hay una fijacion casi patologica
por la perfeccion
(21:41:47) alvherre: hoy en dia Postgres es extremadamente potente,
extremadamente flexible
(21:41:53) alvherre: Postgres cumple a cabalidad con las reglas ACID
(21:42:10) alvherre: Postgres intenta seguir, en todo lo que es
posible, a la definicion del estandar SQL
(21:42:31) alvherre: con WAL, Postgres es capaz de soportar caidas del
sistema sin perder ni un dato
(21:42:57) alvherre: Postgres tiene caracteristicas avanzadas, y las
ha tenido por mucho tiempo
(21:43:02) ftoledo: http://es.wikipedia.org/wiki/ACID
(21:45:54) alvherre: hablo del soporte para constructos avanzados de
SQL, como la transaccionalidad
(21:45:54) ***LUGna pregunta
(21:45:54) alvherre: (incluyendo subtransacciones o "savepoints")
(21:45:54) alvherre: pregunta
(21:45:54) LUGna: queria saber por que
(21:45:54) LUGna: esta lisenciado bajo BSD?
(21:45:54) alvherre: ok, luego contesto eso
(21:45:54) LUGna: okas
(21:45:54) alvherre: subconsultas,
(21:45:54) alvherre: la capacidad de definir funciones por el usuario,
en diversos lenguajes,
(21:45:54) alvherre: disparadores,
(21:45:54) alvherre: reescritura de consultas mediante un sistema de macros,
(21:45:54) alvherre: lo cual a su vez permite implementar vistas,
(21:45:54) alvherre: las cuales a su vez permiten implementar un
sistema muy simple pero potente de privilegios,
(21:45:54) alvherre: control de acceso elaborado,
(21:45:54) alvherre: y extensibilidad en el lenguaje de consultas,
(21:45:54) alvherre: permitiendo definir nuevos tipos de datos,
(21:45:54) alvherre: funciones sobre esos tipos,
(21:45:56) alvherre: operadores para ellos,
(21:46:08) alvherre: nuevos tipos de indices,
(21:46:17) alvherre: nuevas formas de agregacion.
(21:46:26) alvherre: Ok, con respecto a la licencia.
(21:46:39) alvherre: POSTGRES salio de la UCB con licencia BSD
(21:46:53) alvherre: Por que? porque creo que todo en la UCB se libera bajo BSD
(21:47:02) alvherre: la B de BSD es la misma B que la B de UCB
(21:47:23) alvherre: Postgres95, siendo software derivado de POSTGRES,
conservo la misma licencia
(21:47:26) LUGna: gracias!
(21:47:30) alvherre: y PostgreSQL conserva la misma licencia.
(21:47:39) alvherre: Ahora, la verdad es que tampoco hay ningun
interes en cambiar la licencia
(21:47:40) LUGna: y la seguira conservando :D?
(21:47:45) alvherre: La licencia BSD es muy buena para Postgres
(21:47:55) alvherre: porque permite que varias compañias aporten a Postgres
(21:48:11) alvherre: y al mismo tiempo tengan sus versiones privativas
que venden a precio de oro,
(21:48:19) alvherre: con lo cual financian el desarrollo de la version
comunitaria
(21:48:33) alvherre: Por ejemplo, EnterpriseDB vende una version
modificada que agrega compatibilidad Oracle
(21:48:52) alvherre: pero EnterpriseDB tambien emplea a Simon Riggs y
a Bruce Momjian, dos desarrolladores muy importantes
(21:49:02) alvherre: Green Plum hace lo mismo
(21:49:06) alvherre: y Command Prompt
(21:49:08) alvherre: y Pervasive
(21:49:09) alvherre: y Sun
(21:49:28) alvherre: todos ellos venden versiones comerciales
cerradas, y al mismo tiempo soportan el desarrollo de la version
comunitaria
(21:49:44) alvherre: en la practica ha resultado ser un modelo de
desarrollo extremadamente eficiente
(21:49:55) alvherre: porque las distintas compañias tienen distintos
enfoques y distintas prioridades
(21:50:10) alvherre: y eso ayuda a mantener el foco en diversos puntos
(21:50:20) alvherre: a diferencia de otros productos que son
desarrollados por una unica compañia
(21:50:23) alvherre: pero me distraigo
(21:50:29) alvherre: volvamos al tema tecnico
(21:50:46) alvherre: hmm, antes de volver al tema tecnico, hay alguna
pregunta hasta aca?
(21:51:01) ***Mirko pregunta
(21:51:08) alvherre: go ahead Mirko
(21:51:33) Mirko: cuán alto es el nivel que se debe tener para
aportar código
(21:51:38) Mirko: al proyecto?
(21:51:41) alvherre: depende de lo que quieras aportar
(21:51:55) Mirko: código fuente especÃÂficamente
(21:51:57) alvherre: puedes aportar haciendo pruebas o escribiendo documentacion
(21:52:03) alvherre: codigo fuente, es necesario saber C
(21:52:23) alvherre: una vez que sabes C, ya puedes empezar a leer y
entender la organizacion del codigo de Postgres
(21:52:33) alvherre: Postgres usa un C bastante corriente ...
(21:52:43) alvherre: tiene algunas particularidades, pero nada muy
dificil de aprender
(21:52:59) alvherre: si tienes realmente interes, no es dificil empezar
(21:53:10) alvherre: si te interesa aportar al proyecto y quieres ver
como lo hice yo para empezar,
(21:53:18) alvherre: puedo poner una copia de mi memoria de titulo
(21:53:35) alvherre: que se trato justamente del tema de como me
involucre en Postgres, y que fue lo que hice
(21:53:38) Mirko: serÃÂa excelente Alvaro ese aporte
(21:53:48) alvherre: ok, lo dejare aca anotado
(21:53:55) Tauro: puedo agregarla a los logs de la charla Alvaro
(21:54:02) Mirko: muchas gracias por la respuesta
(21:54:11) alvherre: de nada
(21:54:17) alvherre: ok, te la hare llegar entonces, Ricardo
(21:54:23) alvherre: bien, no hay mas preguntas?
(21:54:42) alvherre: ok continuo
(21:54:53) alvherre: Vamos a ver
(21:55:12) alvherre: ya dije que Postgres tiene soporte a
transacciones, a JOINs, a subconsultas, a agrupamiento y agregacion
(21:55:27) alvherre: todo eso es "run of the mill" en un sistema de
gestion relacional de datos
(21:55:49) alvherre: tambien soporta UNION, INTERSECT, EXCEPT,
triggers, rglas de reescritura, vistas
(21:56:04) alvherre: casi todo eso es mas o menos normal.
(21:56:11) alvherre: Aca viene lo mas exclusivo
(21:56:27) alvherre: Postgres soporta funciones, de dos formas:
(21:56:31) alvherre: o podria decir de tres
(21:56:46) alvherre: por un lado, las funciones que simplemente
retornan un valor
(21:56:57) alvherre: por otro lado, las funciones que se usan de triggers
(21:57:07) alvherre: y por ultimo, las funciones que retornan "tablas virtuales"
(21:57:18) alvherre: las funciones pueden estar escritas en multiples lenguajes:
(21:57:19) alvherre: C
(21:57:31) alvherre: PL/pgSQL (que es un emulo de PL/SQL de Oracle)
(21:57:32) alvherre: Tcl
(21:57:47) alvherre: Perl
(21:57:47) alvherre: Python
(21:57:47) alvherre: Java
(21:57:47) alvherre: hay un PL/php que esta en desarrollo
(21:57:54) alvherre: (de hecho yo soy el desarrollador actualmente,
pero esta congelado)
(21:58:00) alvherre: R
(21:58:08) alvherre: y algun otro que no recuerdo.
(21:58:20) alvherre: el tema es que uno puede usar, para cada
problema, el lenguaje que mas le acomode.
(21:58:37) alvherre: Si la funcion tiene que operar mucho con la base
de datos, es posible que lo mejor sea hacerla en PL/pgSQL
(21:58:45) alvherre: si hay que hacer tratamiento de strings, la hacemos en Perl
(21:58:55) alvherre: si hay que hacer analisis estadistico, la hacemos en R
(21:59:10) alvherre: los fanaticos de Python y Java sabran por que los
usan ... yo no lo se :-)
(21:59:39) alvherre: esto significa que un programador Java puede
perfectamente escribir un "procedimiento almacenado"
(22:00:01) alvherre: que puede tomar resultados enormes que vengan del
servidor, procesarlos y retornar un "resumen", una agregacion de
alguna clase
(22:00:10) alvherre: un procesamiento complejo
(22:00:27) alvherre: solamente siguiendo una determinada interfaz (interface)
(22:00:45) alvherre: sin tener que aprender las dificultades de
PL/pgSQL, que a alguna gente se le complica
(22:01:18) alvherre: etc etc. Aplicaciones para esto hay muchas.
(22:01:36) alvherre: Supongamos por ejemplo que alguien quiere enviar
un mail cuando se inserta una fila en una tabla.
(22:01:38) alvherre: Se puede hacer!
(22:01:41) alvherre: es muy sencillo
(22:01:43) alvherre: PERO!
(22:01:46) alvherre: es un error :-)
(22:01:57) alvherre: porque Postgres soporta transacciones, y las
transacciones se pueden abortar.
(22:02:15) alvherre: Lo cual significa que esa fila que se inserto en
la base de datos, ya no esta ahi.
(22:02:17) alvherre: Nunca se inserto
(22:02:23) alvherre: por lo tanto, el mail esta mal enviado.
(22:02:38) alvherre: De manera que se necesita un mecanismo para poder
implementar esto de manera segura
(22:02:50) alvherre: Postgres tambien soporta esto. El mecanismo se
llama LISTEN/NOTIFY
(22:02:55) alvherre: y es realmente muy util
(22:03:07) alvherre: Por otra parte, y retomando el tema de las transacciones
(22:03:17) alvherre: En Postgres, todo lo que se sabe sobre el sistema
esta en tablas
(22:03:25) alvherre: la descripcion de las tablas, esta en tablas
(22:03:37) alvherre: Y todas las tablas se comportan igual
(22:03:53) alvherre: es decir, uno puede hacer modificaciones a la
idea que el sistema tiene sobre nuestras tablas
(22:04:02) alvherre: y luego cancelar esas modificaciones, si es que
no le gustan
(22:04:15) alvherre: Un ejemplo trivial es
(22:04:16) alvherre: BEGIN
(22:04:21) alvherre: DROP TABLE mi_linda_tabla
(22:04:34) alvherre: SELECT * FROM mi_linda_tabla
(22:04:38) alvherre: -- error! la tabla no existe
(22:04:40) alvherre: ROLLBACK
(22:04:52) alvherre: -- ahora salimos de la transaccion anterior, que
fue abortada
(22:04:57) alvherre: SELECT * FROM mi_linda_tabla
(22:05:02) alvherre: -- aca retorna el contenido de la tabla
(22:05:08) alvherre: simpatico eh?
(22:05:10) alvherre: esto funciona para todo
(22:05:17) ***ftoledo pregunta
(22:05:24) alvherre: agregar o borrar columnas, cambiar el tipo, etc
(22:05:29) alvherre: ftoledo, pregunta
(22:05:56) ftoledo: se pueden anindar transacciones.. si es asi hay
algun limite?
(22:06:08) alvherre: Se pueden hacer savepoints, que es casi lo mismo.
(22:06:09) alvherre: Por ejemplo
(22:06:11) alvherre: BEGIN
(22:06:15) alvherre: INSERT INTO foo VALUES (1)
(22:06:20) alvherre: SAVEPOINT dohh
(22:06:25) alvherre: INSERT INTO foo VALUES (2)
(22:06:30) alvherre: ROLLBACK TO dohh
(22:06:36) alvherre: INSERT INTO foo VALUES (3)
(22:06:38) alvherre: COMMIT
(22:06:53) alvherre: luego de esta transaccion, los valoes 1 y 3
estaran en la tabla, pero el 2 no.
(22:07:14) ftoledo: entiendo
(22:07:16) alvherre: Puedes tener hasta 2^32 savepoints ...
(22:07:21) wyr3x: buenas
(22:07:25) alvherre: siempre y cuando no quieras hacer ningun trabajo
util en ellas.
(22:07:29) ftoledo: estos savepoints viven siempre dentro esa
trnasaccion verdad?
(22:07:44) alvherre: Si quieres hacer algo en cada una, podras tener
que se yo, 2^16.
(22:07:51) alvherre: Si, los savepoints siempre van dentro de una transaccion.
(22:08:02) alvherre: Hay que hacer notar que en Postgres, todo es
siempre una transaccion.
(22:08:08) alvherre: Aunque no lo indiques explicitamente
(22:08:18) ftoledo: oki gracias
(22:08:26) alvherre: el sistema inicia una transaccion antes de
ejecutar un comando, y la termina una vez que el comando esta listo
(22:08:45) alvherre: ok, pero no es gracia solamente procesar una transaccion
(22:08:58) alvherre: lo realmente bueno es que puedas hacer varias
transacciones simultaneamente
(22:09:03) alvherre: sin bloquear unas con otras
(22:09:06) alvherre: y modificando las mismas tablas
(22:09:22) alvherre: incluso, haciendo que algunas transacciones vean
registros que otras transacciones estan modificando
(22:09:26) alvherre: Esto se llama MVCC
(22:09:31) alvherre: "Multi Version Concurrency Control"
(22:09:42) alvherre: hasta donde entiendo, Postgres fue el primer
sistema en tener MVCC
(22:09:49) alvherre: despues Oracle implemento el mismo sistema
(22:09:52) alvherre: y MS SQL Server tambien.
(22:10:04) alvherre: el rendimiento de MVCC es _extraordinario_
(22:10:14) ftoledo: http://en.wikipedia.org/wiki/Mvcc
(22:10:16) ftoledo: interesante
(22:10:18) alvherre: muy superior al rendimiento que puede tener un
sistema que aplica locks
(22:11:09) alvherre: tradicionalmente, los sistemas bloquean algo para
que unas transacciones no creen problemas en otras
(22:11:36) alvherre: por ej. en tablas MySQL MyISAM, si una
transaccion esta modificando una tabla, ninguna otra transaccion puede
mirarla
(22:11:44) alvherre: es decir, se bloquea la tabla entera.
(22:12:01) alvherre: (o quizas sea con las tablas tipo BDB en MySQL,
no estoy seguro)
(22:12:18) alvherre: uno puede ponerse mas exquisito
(22:12:23) alvherre: y no bloquear las tablas enteras
(22:12:34) alvherre: sino que bloquear solamente el registro que se
esta modificando
(22:12:49) alvherre: entonces, otras transacciones pueden ver toda la
tabla _excepto_ el registro que se esta mdoificando
(22:13:10) alvherre: (hay un intermedio, en el que la unidad que se
bloquea es la _pagina_ que contiene al registro en cuestion)
(22:13:19) alvherre: el sistema MVCC va mas alla
(22:13:33) alvherre: y dice que alguien que esta escribiendo un
registro, no modifica el mismo registro,
(22:13:41) alvherre: sino que crea uno nuevo que "supercede" al anterior.
(22:13:51) alvherre: Entonces, alguien que quiere leer el registro,
puede continuar viendo el anterior.
(22:14:01) alvherre: por lo tanto el registro no esta bloqueado y
puede seguir viendose.
(22:14:44) alvherre: esto permite que multiples transacciones esten
operando sobre la misma tabla, modificando variados registros,
(22:14:51) alvherre: examinando los registros que otros modifican,
(22:14:59) alvherre: y continuar con trabajo.
(22:15:31) alvherre: (obviamente hay un momento en que hay que
bloquear si dos transacciones quieren modificar simultaneamente el
mismo registro)
(22:15:45) alvherre: bien, eso es MVCC.
(22:15:53) alvherre: MVCC permite alta concurrencia
(22:16:02) alvherre: lo cual significa que Postgres escala muy bien,
(22:16:31) alvherre: si el sistema de tu empresa crece, puedes
adaptarte al crecimiento.
(22:16:40) alvherre: Otros sistemas estan limitados en forma intrinseca,
(22:16:51) alvherre: y es este detalle el que hace a Postgres tan deseado.
(22:17:00) alvherre: Postgres es tambien muy portable
(22:17:13) alvherre: Tipicamente funciona en Linux
(22:17:30) alvherre: tambien corre, obviamente, en los varios BSD:
FreeBSD, OpenBSD, NetBSD, Dragonfly
(22:17:34) alvherre: en Mac OS X
(22:17:50) alvherre: Solaris, AIX, HP-UX, Irix, etc
(22:18:12) alvherre: (en algun tiempo estuvo portado a BeOS y QNX,
pero nadie mantiene esos ports ahora y creo que fueron eliminados)
(22:18:25) alvherre: Y desde la version 8.0 corre tambien en Windows.
(22:18:41) alvherre: esto ultimo ha hecho crecer mucho a la comunidad
(22:18:48) alvherre: tanto la comunidad de usuarios como de desarrolladores.
(22:19:28) alvherre: la comunidad de usuarios es un punto muy importante
(22:19:48) alvherre: tipicamente, con los proyectos de software libre
hay listas de correo y canales IRC donde obtener soporte
(22:20:04) alvherre: es muy comun que uno se suscriba a una lista,
haga una pregunta y reciba unas cuantas respuestas groseras
(22:20:13) alvherre: "eres un newbie! no te queremos aqui"
(22:20:15) alvherre: o simplemente
(22:20:17) alvherre: RTFM
(22:20:26) alvherre: no es asi en las listas de correo @postgresql.org
(22:20:42) alvherre: yo no se por que, pero la gente es muy educada y
siempre hay alguno dispuesto a ayudar
(22:20:46) alvherre: aun con los problemas mas triviales
(22:20:51) alvherre: pero cuando llegan los problemas complejos
(22:20:56) alvherre: ahi es cuando se pone interesante :-)
(22:21:12) alvherre: y ahi salen los "mayores" a disectar el problema
y encontrarle la solucion
(22:21:22) Tauro: alvherre: quizas quieras comentarnos la direccion de
la lista en español ahora?
(22:21:22) alvherre: y si un usuario llega a encontrar un bug,
(22:21:25) alvherre: pobre de el!
(22:21:30) alvherre: pobre del bug quiero decir
(22:21:45) alvherre: porque generalmente se elimina en pocas horas ...
si tiene suerte vive un par de dias
(22:22:03) alvherre: dentro de estas listas, tenemos una en castellano
(22:22:13) alvherre: es buena para cuando se esta empezando
(22:22:21) alvherre: y cuando no se tiene manejo del ingles.
(22:22:24) alvherre: engrish
(22:22:47) alvherre: ahi hacemos lo que podemos para solucionar los
problemas que se nos plantean.
(22:22:56) alvherre: aca pueden encontrar los archivos, e
instrucciones para suscribirse:
(22:23:07) alvherre: http://archives.postgresql.org/pgsql-es-ayuda/
(22:23:27) alvherre: La comunidad de usuarios y de desarrolladores es
uno de los activos mas importantes de PostgreSQL
(22:23:43) alvherre: algunas de las ideas del desarrollo futuro vienen
de lo que los usuarios expresan.
(22:24:03) alvherre: La comunidad de usuarios es importante para los
desarrolladores, y esto se nota.
(22:24:39) alvherre: La comunidad de desarrolladores es abierta y esta
siempre dispuesta a enrolar nuevos miembros que tengan la motivacion
necesaria
(22:24:47) alvherre: tener las aptitudes es bueno tambien por supuesto :-)
(22:25:08) alvherre: ... bueno, creo que con eso finaliza la
"introduccion a PostgreSQL".
(22:25:12) ***Rubencho pregunta
(22:25:20) alvherre: por lo menos creo que se me acabo la tabla de
contenidos :-)
(22:25:22) alvherre: di Rubencho
(22:25:26) Rubencho: Alvaro, hace unas semanas, un post en el blorg de
Tim O’Reilly trata de como conocidas empresas de servicio web no
utilizan gestores de bases de datos sino que almacenan sus datos en
ficheros de texto plano, para gestionar grandes cantidades de
información. Ante este modelo, a) cual es el segmento de sistemas
para el uso de Postgresql, y b) es este gestor una alternativa para
sistemas de alta disponibilidad/rendimiento para el manejo de
(22:25:26) Rubencho: volumenes grandes de información (ej:volumenes
como flirck, google, etc.) especialmente de servicio web.
(22:25:54) alvherre: heh
(22:25:59) alvherre: No leo el blog de Tim :-)
(22:26:07) Rubencho: :-D
(22:26:10) alvherre: pero no dudo que sea cierto
(22:26:24) alvherre: el punto es que Flickr o Google necesitan
rendimiento extremo
(22:26:41) alvherre: el resto de los usuarios, no necesita rendimiento
extremo ...
(22:26:50) alvherre: mas bien, lo que necesita es que alguien
solucione ciertos problemas por uno
(22:26:57) alvherre: por ejemplo, cuando uno borra tal o cual cosa,
borra el archivo?
(22:27:05) alvherre: supongamos que borro el archivo ... como lo recupero?
(22:27:14) alvherre: supongamos que llevo un archivo con cada cliente
(22:27:23) alvherre: uff! imaginate la complicacion para el sistema de archivos
(22:27:32) alvherre: ok, entonces llevemos un archivo para todos los
clientes ...
(22:27:36) alvherre: como busco un cliente?
(22:27:44) alvherre: tengo que recorrer todo el archivo?
(22:27:48) alvherre: ok, eso funciona ...
(22:27:52) alvherre: hasta que tienes muchos clientes
(22:28:04) alvherre: entonces tienes que construir un indice para
acelerar las busquedas
(22:28:26) alvherre: una vez que construyes el indice te das cuenta
que quieres juntar el resultado de una busqueda de clientes con una
busqueda de productos que les has vendido ...
(22:28:32) alvherre: ok, entonces implemento un algoritmo de JOIN
(22:28:55) alvherre: oye, pero no crees que seria mucho mas _facil_
que hubiera un producto que implementara todo esto, de manera que
pueda accederse de manera sencilla?
(22:29:03) alvherre: este es el problema que vienen a resolver los RDBMS
(22:29:18) alvherre: el problema _general_ de alguien que quiere
almacenar, consultar, procesar, modificar informacion
(22:29:32) alvherre: sin obligar al usuario a escribir su propio
codigo para hacer eso
(22:29:52) alvherre: manejar locking para controlar la concurrencia de
procesos ...
(22:30:01) alvherre: arriba hablaba de MVCC
(22:30:09) alvherre: cuantos de nosotros podriamos implementar un sistema MVCC?
(22:30:20) alvherre: o siquiera un miserable sistema de bloqueo de
registros? :-)
(22:30:26) alvherre: no es nada facil hacerlo bien
(22:30:40) alvherre: y uno no quiere perder la mitad de los clientes
porque metio un bug en el codigo!!
(22:31:04) alvherre: Google y Flickr pueden permitirse buscar
soluciones mas apropiadas para sus problemas particulares
(22:31:06) alvherre: nosotros no
(22:31:20) alvherre: no se si eso responde tu pregunta
(22:31:54) ***Tauro pregunta
(22:31:59) alvherre: pregunta
(22:32:03) Tauro: :) gracias
(22:32:17) ***ftoledo pregunta
(22:32:26) Tauro: la pregunta va orientada al segmento "empresarial"
donde es bien conocida la penetracion de Oracle
(22:32:28) alvherre: momento, ftoledo
(22:32:49) Tauro: las comparaciones son inevitables.... que puedes
comentarnos al respecto?
(22:32:56) ftoledo: alveherre, por supuesto!
(22:33:21) alvherre: Bueno, Oracle es mucho mas caro
(22:33:24) Tauro: jajajajaj
(22:33:27) alvherre: y ofrece algunas ventajas ...
(22:33:29) ftoledo: cuac
(22:33:30) alvherre: ... pero no son tantas(22:33:45) Tauro: nos nombras algunas?
(22:33:48) alvherre: Postgres tiene un rendimiento extraordinario
(22:34:08) alvherre: vamos a ver, uno de los dramas historicos de
Postgres son las funciones de agregacion
(22:34:16) alvherre: como ya dije, la agregacion en Postgres es extensible:
(22:34:26) alvherre: el usuario puede crear nuevas funciones de agregacion
(22:34:37) alvherre: esta moneda tiene otra cara:
(22:34:45) alvherre: y es que cada funcion de agregacion es opaca para
el sistema
(22:34:59) alvherre: las funciones tienen un determinado protocolo de ejecucion:
(22:35:16) alvherre: entran todas las tuplas, se hace algo con ellas,
y sale un resultado
(22:35:23) alvherre: por ejemplo:
(22:35:29) alvherre: SELECT count(*) FROM tabla
(22:35:40) alvherre: esto suma 1 a un contador para cada tupla que entra
(22:35:47) alvherre: la salida es la cantidad total de tuplas
(22:36:01) alvherre: SELECT min(*) FROM tabla
(22:36:09) alvherre: sorry,
(22:36:16) alvherre: SELECT min(col) FROM tabla
(22:36:27) alvherre: la salida es el menor valor de "col" que hay en la tabla.
(22:36:40) alvherre: En muchos sistemas, es posible saber muy rapido
cual es el minimo valor
(22:36:46) alvherre: examinando un indice de la tabla.
(22:36:54) alvherre: O se puede saber cuantas filas hay en la tabla.
(22:37:01) alvherre: En Postgres, no se puede!
(22:37:05) alvherre: hay que recorrer la tabla completa
(22:37:16) alvherre: debido a la definicion opaca de agregacion.
(22:37:24) alvherre: en Oracle esto es casi instantaneo. O(1)
(22:37:31) alvherre: en Postgres es O(n)
(22:38:04) alvherre: (el problema particular con min y max fue
solucionado en Postgres 8.1 gracias a un hack ... pero en general el
problema sigue ahi)
(22:38:15) alvherre: siempre hay maneras alternativas de solucionar
estos problemas por supuesto!
(22:38:42) alvherre: de manera que uno puede ahorrarse todos esos
dolares que van a Oracle Corp. y dedicar unos pocos a desarrollar esta
solucion alternativa
(22:39:11) alvherre: ... la verdad no se que otra cosa tiene Postgres
en desventaja frente a Oracle.
(22:39:13) Tauro: jajja
(22:39:26) ***haroldo pregunta
(22:39:40) alvherre: acepto ideas de cosas avanzadas que alguien haria
en Oracle, a ver si la podemos hacer en Postgres tambien.
(22:39:42) alvherre: momento Haroldo.
(22:39:45) alvherre: Le toca a ftoledo.
(22:39:49) alvherre: ftoledo?
(22:39:54) ftoledo: tnx, va mi pregunta
(22:40:11) alvherre: (acepto ideas sobre Oracle por /msg privado si
alguien tiene alguna)
(22:40:25) ftoledo: respecto a los filesystems, has probado bastante
supongo, tenes alguna recomendacion en particular para obtener buen
rendimiento?
(22:40:37) alvherre: una mezcla entre ext3 y ext2
(22:40:50) alvherre: Postgres tiene un "journal" propio -- el WAL
(22:41:04) alvherre: por lo tanto no necesita journal de los datos --
solo de los metadatos.
(22:41:15) alvherre: esto, en los archivos de las tablas, la particion de datos
(22:41:32) alvherre: el WAL puede vivir en ext2 tranquilamente, porque
no necesita el journal para nada, puede sobrevivir perfectamente
(22:41:51) alvherre: (tener un journal en el sistema de archivos te
quita un delta de rendimiento sin aportar ningun beneficio)
(22:42:14) alvherre: ahora, francamente no he hecho una comparativa
exhaustiva del asunto
(22:42:26) Tauro: alvaro como "mezclas" ext2 y ext3?
(22:42:30) alvherre: pero si quieres hacer una, ten muy en
consideracion los distintos sistemas de journalling de ext3
(22:42:36) alvherre: bueno, tienes dos particiones ...
(22:42:41) Tauro: oh ok
(22:42:57) alvherre: una para WAL (ext2) y otra para datos (ext3 con
journal de metadatos)
(22:43:14) alvherre: ok, Haroldo tu pregunta?
(22:43:46) haroldo: seria acerca del uso verdaderamenta aprovechador
de multiples procesadores
(22:44:25) alvherre: ok -- Postgres no es multithread, sino multiproceso
(22:44:39) alvherre: cada conexion se atiende en un procesador.
(22:45:06) alvherre: si tu tienes un sistema OLTP con muchos clientes
concurrentes, cada procesador estara atendiendo las consultas de
varios de ellos
(22:45:25) alvherre: si tienes un sistema OLAP con muy pocos o un solo
cliente, habra un procesador muy ocupado atendiendolo y el resto no
hara nada.
(22:45:32) ***k7k0 pregunta
(22:45:41) alvherre: no se si contesta eso tu pregunta Haroldo?
(22:46:12) haroldo: si, esta buena la distincion entre oltp y olap. en
eso hay una diferencia grande con oracle ?
(22:46:28) alvherre: hmm, puede ser. Desconozco lo que hace Oracle.
(22:46:38) haroldo: bien. gracias ! :-)
(22:46:43) alvherre: Si lo que hace es lanzar subprocesos para atender
a una consulta, entonces si hay una diferencia grande
(22:47:06) alvherre: Si realmente estas muy interesado en OLAP y
tienes bases de datos muy grandes, te recomiendo hablar con los
muchachos de Bizgres
(22:47:21) alvherre: ellos venden una version modificada de Postgres
que soporta el "particionamiento" en clusters de maquinas,
(22:47:22) haroldo: perfecto.
(22:47:30) alvherre: que atienden consultas en paralelo.
(22:47:49) alvherre: Por lo que ellos mismos dicen, el sistema da un
nivel de escalamiento espectacular.
(22:47:55) alvherre: k7k0, pregunta.
(22:47:57) k7k0: Alvaro, vi que en tu página una guÃa de PHP con
Postgresql (2003), Con la inclusión de PDO, y más allá del cambio
de API, ¿hay alguna ventaja notoria con respecto al driver anterior?
(22:48:20) alvherre: hmm ... la verdad es que desconozco el tema PHP
(22:48:25) haroldo: puedo comentar una experiencia reciente con
postgresql y multiples procesadores: al pasar a mono-procesador, la
performance no se degrado en nada. el cliente prefiere ahora
monoprocesadores para usar con pog
(22:48:40) alvherre: de hecho esa presentacion la hice mas bien a
regañadientes :-)
(22:48:47) k7k0: ok, gracias!
(22:48:49) alvherre: haroldo, eso era OLAP?
(22:49:00) haroldo: no, era oltp
(22:49:20) alvherre: k7k0, lo que si te puedo decir es que el driver
anterior dejaba algo que desear. Es muy posible que lo hayan mejorado
(22:50:21) alvherre: un abrazo Haroldo
(22:50:23) Tauro: saludos un gusto haroldo!
(22:50:33) haroldo: gracias a todos de verdad !
(22:50:36) alvherre: bien, hay mas preguntas?
(22:50:38) mario__: holas, perdon por la interrupcion. Segun supe la
nueva version de php habia sido escrita de nuevo
(22:50:59) ***gabriel pregunta
(22:51:15) alvherre: gracias Mario
(22:51:24) ***LUGna pregunta luego de gabriel
(22:51:25) mario__: de nada Alvaro :)
(22:51:28) alvherre: supongo que k7k0 puede conversar contigo sobre
los detalles :-)
(22:51:35) alvherre: ok, gabriel pregunta
(22:52:24) gabriel: cuantos registro maneja postgre sql o limite de la
base de datos en cuanto a tamaño
(22:52:56) alvherre: El limite en la cantidad de registros en cada
tabla es un numero enorme
(22:53:04) alvherre: dejame ver si me acuerdo del numero exacto
(22:53:23) alvherre: en la practica, necesitas tablas de muchos GB
para eso ... o quizas sea un numero de TB
(22:53:33) alvherre: con respecto al limite de la base de datos en
total, no hay ninguno
(22:53:42) alvherre: hay bases de datos de varios TB en funcionamiento
(22:53:47) alvherre: y obviamente funcionan bien
(22:53:56) alvherre: por supuesto que para eso necesitas tener
servidores "de verdad" ...
(22:53:57) SACL: Puedo preguntar ?
(22:54:04) alvherre: arreglos de muchos discos, etc.
(22:54:10) alvherre: SACL, momento.
(22:54:40) alvherre: gabriel, el numero maximo de registros es algo
asi como 2^48 creo
(22:54:50) alvherre: LUGna, pregunta
(22:54:55) LUGna: Alvaro, quisiera saber si puedes hablar un poquito
de precios, y que versiones hay disponibles (pro, standart, etc)
(22:55:01) alvherre: (gabriel, contesta eso a tu pregunta?)
(22:55:09) alvherre: Precios -- bueno, el precio es muy conveniente
(22:55:14) Tauro: :=)
(22:55:16) alvherre: PostgreSQL es gratis
(22:55:23) alvherre: Hay una sola version: la estandar
(22:55:31) alvherre: que incluye todas las capacidades del sistema
(22:55:48) alvherre: el precio que debes pagar es tener a una persona
capacitada para mantenerlo funcionando,
(22:55:55) ***luciano pregunta
(22:55:57) alvherre: o bien contratar soporte con alguna empresa,
(22:56:13) LUGna: si, pero esa duda me surgio cuando mencionaste que
utilicemos esos dolares que usualmente irian a oracle para post
(22:56:22) LUGna: pero ya comprendo
(22:56:26) alvherre: o bien tener a alguien metido en las listas de
correo, aprendiendo y preparandose para hacer las preguntas
apropiadas.
(22:56:33) alvherre: Ok, entiendo.
(22:56:43) alvherre: Puedes gastar dolares en Postgres:
(22:56:46) alvherre: por ejemplo en capacitacion,
(22:56:55) alvherre: o mandando a desarrollar algo que necesites y que
Postgres no tenga,
(22:56:58) alvherre: o contratando soporte.
(22:57:09) alvherre: Postgres en si, es gratis. Pero usar Postgres
puede no ser gratis.
(22:57:13) alvherre: SACL, pregunta.
(22:57:24) LUGna: ya, muchas gracias!
(22:57:25) SACL: Gracias,
(22:57:55) SACL: InstalÃ(c) PG 8.1 bajo Sarge y lo he probado sin
ningún problema...
(22:58:29) SACL: Ahora estoy en la fase de elegir la herramienta que
hará de interfase...
(22:59:10) SACL: Que herramienta me recomendarÃas, que tenga una gran
afinidad con PG...
(22:59:22) alvherre: Postgres tiene drivers para variados lenguajes,
(22:59:26) alvherre: algunos mejores que otros.
(22:59:52) alvherre: PHP no te lo recomiendo --- tanto porque en lo
personal no me gusta como lenguaje, como porque hasta hace poco el
driver no era muy bueno.
(22:59:59) SACL: Estpy probando mod-python, webware y php !
(23:00:11) alvherre: Perl es mi preferido. Sin dudarlo ni un momento.
(23:00:32) alvherre: Python es muy bueno, lo recomiendo, _pero_ yo no
lo he usado mas que para juguetes.
(23:00:58) ***Furibundo pregunta
(23:01:03) alvherre: Si es para hacer algo en Web, te recomiendo lejos
que veas de hacer algo en Django (Python), o Catalyst (Perl), o Rubby
on Rails (Ruby)
(23:01:17) ***Mirko pregunta
(23:01:20) alvherre: PHP te recomiendo que, si estas evaluando, no
pierdas tu teimpo.
(23:01:29) alvherre: luciano, pregunta.
(23:01:30) Tauro: alvherre: si me permites... en
http://www.postgresql.org/docs/faqs.FAQ.html#item4.4 esta la respuesta
al limite de los tamaños que pregunto anteriormente gabriel.
(23:01:41) ***LUGna gente, lo siento pero debo retirarme. Muchas
gracias Alvaro por todo y a seguir adelante!!!! clap clap, adios!!!
(23:01:41) luciano: Conoces empresas en argentina q esten utilizando
postgres como base de datos principal, y si es asi si conoces algunas
caracteristicas de esos sistemas (la preguntas viene por que necesito
recomendar a una organizacion el uso de postgres y necesito conocer
casos reales en q se este utilizando)
(23:01:49) alvherre: ok muchas gracias Tauro
(23:02:04) alvherre: hmm, en Argentina no tengo idea
(23:02:15) alvherre: en Chile te puedo nombrar algunas :-)
(23:02:21) luciano: y en otros paises de lastinoamerica
(23:02:45) alvherre: vamos a ver. Aca en Chile, Entel S.A. usa
Postgres en algunos sistemas.
(23:03:05) alvherre: La superintendencia de AFPs usa Postgres (esto es
una reparticion del estado, con bases de datos de varios GB)
(23:03:13) alvherre: Atentus.com usa Postgres
(23:03:33) alvherre: el NIC Chile esta evaluando usar Postgres y hasta
el momento me dicen que "vamos bien" :-)
(23:03:48) alvherre: ... no me puedo acordar de otros en este momento ...
(23:03:54) alvherre: tenia una lista :-(
(23:03:56) Tauro: aduana?
(23:04:03) alvherre: no lo se.
(23:04:17) luciano: esta bien, gracias
(23:04:18) alvherre: lo pondre en mi lista de cosas pendientes
(23:04:21) alvherre: Mirko, pregunta
(23:04:28) SACL: plop !,
(23:04:40) alvherre: ?
(23:04:47) Mirko: mencionaste a Ruby on Rails que usa un ORM, ¿es
bueno el uso de este tipo de soluciones?
(23:04:57) alvherre: ahh perdon, me salte a Furibundo
(23:05:02) alvherre: luego volvemos con Furibundo
(23:05:15) alvherre: si es bueno o es malo, es discutible ...
(23:05:18) alvherre: para algunos es bueno
(23:05:22) alvherre: porque te ahorra tiempo de programador
(23:05:25) alvherre: para otros es malo
(23:05:28) alvherre: porque te quita rendimiento
(23:05:46) alvherre: Es una discusion como lo de que Flickr use
archivos planos en vez en un RDBMS.
(23:06:13) Mirko: pero en tÃÂ(c)rminos de rendimiento
(23:06:23) alvherre: lo bueno de algunos frameworks es que te permiten
"pasar a llevar" el ORM cuando necesitas rendimiento "extremo"
(23:06:39) alvherre: creo que Rubby on Rails en general es menos
flexible para esto que Catalyst o Django.
(23:06:51) Mirko: ok gracias por la respuesta
(23:06:57) alvherre: todo depende realmente de lo que quieras hacer.
(23:07:14) alvherre: Furibundo, disculpa, tu turno.
(23:07:21) Furibundo: :P todo bien
(23:07:23) Furibundo: Es muy conocida la popularidad de MySQL, existe
alguna caracterÃÂstica en particular en la que MySQL aventaje a
PostgreSQL?
(23:07:43) alvherre: para consultas muy simples, MySQL suele ser mas
rapido que Postgres
(23:08:16) alvherre: pero MySQL no usa MVCC segun entiendo, por lo
tanto este beneficio no es tan marcado cuando hay alta concurrencia
(23:08:42) alvherre: por otro lado, el motor de "transacciones" de
MySQL, hace que tenga el mismo rendimiento que Postgres ...
(23:08:52) alvherre: y para consultas complejas, el optimizador de
MySQL se queda corto.
(23:09:04) alvherre: Es cierto que estan mejorando y agregando
caracteristicas nuevas ...
(23:09:21) alvherre: ... pero tambien es cierto que estas cosas las ha
tenido Postgres desde hace mucho y Postgres tiene mucha ventaja.
(23:09:36) Furibundo: muchas gracias por la respuesta
(23:09:52) alvherre: Es un poco molesto -- los de MySQL antes solian
decir "hey, las llaves foraneas no sirven para nada!! Son
responsabilidad de la aplicacion"
(23:10:03) alvherre: y a los años despues aparecen con llaves foraneas
(23:10:19) alvherre: lo mismo decian de los triggers -- no, es que los
triggers son por la flojera del programador
(23:10:23) alvherre: entonces, por que ahora tienen triggers?
(23:11:13) alvherre: SACL, por que ese "plop"? Te queda una pregunta?
(23:11:43) Tauro: alvherre: dejame agregar para luciano algo: aqui en
Argentina son conocidos los casos de Loma Negra y Quilmes usando
postgresql, creo que un "gran diario" argentino tambien lo usa, pero
no estoy en condiciones de afirmarlo.
(23:12:11) luciano: gracias tauro
(23:12:37) alvherre: bien!
(23:12:46) ***Rubencho pregunta
(23:12:52) alvherre: pregunta Rubencho
(23:13:11) Rubencho: Por que Postgresql no prende entonces?
(23:13:17) alvherre: :-)
(23:13:19) alvherre: buena pregunta
(23:13:20) Rubencho: a pesar de sus maravillas?
(23:13:26) alvherre: por que Postgres no prende?
(23:13:30) Tauro: :)
(23:13:31) alvherre: no se, la verdad
(23:13:38) mario__: jeje :)
(23:13:45) alvherre: De partida porque hay muchos mitos detras
(23:13:56) alvherre: que Postgres es lento (que lo era, hace 10 años)
(23:14:03) alvherre: que Postgres es dificil de usar (mito absoluto)
(23:14:24) alvherre: hay dos explicaciones por las que MySQL es mucho
mas popular
(23:14:39) alvherre: 1. MySQL AB tiene varios millones de dolares que
dedica a marketing y publicidad
(23:15:20) alvherre: 2. MySQL tiene una masa importante de usuarios en
los proyectos de software libre, y se crea una suerte de
auto-afirmacion
(23:15:29) alvherre: "todos usan MySQL, que debo escoger yo?"
(23:15:34) alvherre: no parece una pregunta muy dificil :-)
(23:15:41) Tauro: siempre me parecio curioso
(23:15:48) Tauro: que gente que opta por SL = Linux
(23:16:00) Tauro: siga ese pensamiento en algunas elecciones como la
que mencionas :)
(23:16:01) alvherre: la gente que compara ambos, que se da el trabajo
de jugar con Postgres, raramente se vuelve a MySQL.
(23:16:42) Rubencho: Faltara un Postgre on Rails?
(23:16:58) alvherre: yo creo que ya estamos ganando masa critica
(23:17:21) alvherre: y en el pasado cercano se han unido varias
empresas grandes que estan empezando a meterle esos recursos de
marketing
(23:17:25) alvherre: ah, me faltaba una cosa!
(23:17:28) alvherre: MySQL Press
(23:17:39) alvherre: ve a una libreria, a la seccion de computacion
(23:17:39) SACL: Ese "?" fue accidental, pasÃ(c) a llevar el teclado !
(23:17:52) alvherre: cuantos libros de MySQL ves? Cuantos de Postgres?
(23:18:05) Tauro: puedo agregar?
(23:18:08) Tauro: hosting
(23:18:09) alvherre: Hay muchos mas de MySQL. Y esto puede ser un
factor importante para algunas personas que tienen que tomar la
decision
(23:18:23) Tauro: el 99% de hosting soporta mysql, pero no pgsql
(23:18:23) alvherre: tambien. Hosting. Hay muchos proveedores que
ofrecen MySQL pero pocos que ofrecen Postgres.
(23:18:50) alvherre: puede que el hecho de que Postgres fuera portado
a Windows recien en 8.0 haya afectado tambien.
(23:19:17) alvherre: Ah, el nombre del sistema es PostgreSQL
(23:19:17) ***Tauro tiene una pregunta
(23:19:24) alvherre: se pronunca Postgres-cu-ele
(23:19:29) alvherre: pronuncia, digo
(23:19:38) alvherre: cuando uno quiere abreviar, usa "Postgres".
(23:19:50) alvherre: Nunca dice "Postgre", ni "Postgri", ni "Postgrei".
(23:19:56) alvherre: Tauro, pregunta.
(23:20:19) Tauro: alvaro, porque habiendo pasado tanto tiempo desde
8.x siguen sacandose releases de 7.4.x?
(23:20:30) alvherre: (para escribirlo aun mas corto, se suele usar
pgsql o simplemente "pg". No use "psql" porque esto se confunde con el
cliente de consola de texto)
(23:20:52) Tauro: no es despilfarro de recursos?
(23:20:54) alvherre: porque 7.4 sigue siendo una version a la cual se
le puede dar soporte. No tiene grandes fallas de diseño.
(23:21:17) alvherre: no, porque los arreglos de bugs no son "tan
caros". Generalmente son localizados
(23:21:27) Tauro: ok gracias, entendido
(23:21:42) alvherre: cuando aparezca en 7.4 un bug tan feo que haya
que cambiar un porcentaje importante del codigo fuente para
corregirlo, entonces es posible que se abandone
(23:22:01) alvherre: pero por lo pronto, se obtiene un buen retorno
manteniendo soporte para esa rama.
(23:22:21) Tauro: creo que es importante mencionar tambien que en
general los upgrades de versiones suelen ser limpios
(23:22:27) Tauro: ya que hablamos del tema
(23:22:31) alvherre: ahh, cierto.
(23:23:06) alvherre: Uno puede hacer un upgrade desde 7.4.8 a 7.4.9 y
a 7.4.10 y a todas las versiones dentro de la serie 7.4, simplemente
recompilando y tirando los nuevos binarios encima de los viejos.
(23:23:37) alvherre: En cambio, para ir de 7.4 a 8.0 hay que hacer un
dump -> restore, lo cual suele ser costoso.
(23:24:45) alvherre: Mario estaria usando realmente BitchX en una Palm? vaya!
(23:24:54) alvherre: bueno, hay mas preguntas?
(23:25:07) Tauro: :=)
(23:25:25) Tauro: Tal parece que no...
(23:25:26) alvherre: bueno, creo que ya es suficientemente tarde alla
(23:25:27) ***c354r1t0 pregunta/comenta
(23:25:35) Tauro: en ese caso...adelanrte c354r1t0
(23:25:35) alvherre: aca son recien las 22:00 ...
(23:26:43) Tauro: c354r1t0: tu pregunta/comentario?
(23:26:53) c354r1t0: es sabido que acá (venezuela) existe un decreto
que _motiva_ el uso de SL en los organismos del estado, en la ciudad
donde vivo, MÃ(c)rida, se hizo una _asamblea_ para decidir cuaáles
herramientas utilizar los rogranismo estadales
(23:27:46) c354r1t0: quien dirigia la reunión, eran representanes
(entiendo) de algún LUG, en el caso de los SGBD, se propuso pg y
mysql
(23:28:24) c354r1t0: la mayorÃa de los representantes de los
organismos se afincaron por mysql, con la excusa de que era más
fácil conseguir quiÃ(c)n trabajara con Ã(c)l
(23:29:22) c354r1t0: en mi poco roce con algunos de estos organismos,
y sus aplicacaciones, y sus desarrolladores/administradores, no se
explota el uso de los SGBD
(23:29:27) alvherre: creo que tiene que ver con el argumento de la
masa critica de MySQL
(23:29:44) alvherre: es un hecho que la gran mayoria de los
desarrolladores de software no tiene ni la menor idea de como lidiar
con un SGBD
(23:29:54) c354r1t0: cuál estrategÃa se podrÃa recomendar para
_convencerlos_
(23:29:58) alvherre: y hacen solamente consultas triviales y le dejan
todo el trabajo a la aplicacion.
(23:30:03) alvherre: buena pregunta ...
(23:30:17) alvherre: el SGBD es el lugar perfecto para solucionar
algunos problemas
(23:30:40) alvherre: puedes borrar grandes secciones de codigo de tu
aplicacion si sabes mover el poder del lenguaje SQL en la direccion
correcta
(23:30:48) alvherre: menos codigo ==> menos bugs
(23:30:52) alvherre: y posiblemente, mas rendimiento
(23:31:10) c354r1t0: justo eso, lo estoy viendo ahorita, en mi empleo
nuevo, mi jefe me pidió que hiciera un poco de cosas con el lenguaje,
cuando realmente se pueden hacer con pg, ler dije que no, que las
harÃa con pg y me respondió que no sabÃa que se podÃa, que se lo
demostara
(23:31:12) alvherre: el problema es que para poder hacer esto, primero
hay que saber que se puede hacer.
(23:31:23) alvherre: correcto
(23:31:30) alvherre: me parece una actitud muy interesante :-)
(23:31:41) alvherre: suscribete a la lista que mencionaba antes si
tienes problemas.
(23:31:50) alvherre: y nos preguntas, a ver si te podemos ayudar.
(23:31:53) c354r1t0: ya lo estoy, gracias
(23:32:02) alvherre: estupendo
(23:32:26) c354r1t0: çpero no estoy identificado con este nick
(23:32:27) alvherre: si lo convences, el puede ser una nueva palanca
para apoyar la idea de usar Pg en otras partes
(23:32:53) c354r1t0: de hecho, creo que si, ya me estoy ahorrando unas
6 tablas...
(23:33:00) alvherre: bien! :-)
(23:33:06) Tauro: c354r1t0: con el criterio de "mas gente lo usa"
debieran preferir windows a linux no?
(23:33:13) alvherre: felicitaciones
(23:33:22) alvherre: ese es un buen punto
(23:34:05) thranduilk: pregunta
(23:34:06) sabino: la gente no usa windows más bien windows los usa a ellos
(23:34:17) alvherre: thranduilk, pregunta
(23:34:27) c354r1t0: Tauro, pues... seguro, de hecho no les gusta la
idea de apegarse al decreto, pero ahi le vamos dando
(23:34:34) c354r1t0: alvherre, gracias
(23:34:50) alvherre: c354r1t0, yo voy a estar en Venezuela para el 4to
Foro de Conocimiento Libre, en Octubre.
(23:35:05) alvherre: Estoy dispuesto a recorrer el pais si alguien
quiere oir una charla mia y puede pagar los costos :-)
(23:35:59) thranduilk: Siempre que se habla de Mysql sobre sale la
velocidad, ahora vi una comparativa con Firebird y le esta pisando los
talones
(23:36:18) alvherre: Firebird le pisa los talones a MySQL?
(23:36:22) thranduilk: si tengo entendido Firebird es la version libre
de Interbase 6 de Borland
(23:36:27) alvherre: si
(23:36:31) alvherre: asi es
(23:36:33) thranduilk: encuento a velocidad
(23:37:04) alvherre: no conozco Firebird como para decirlo. Pero lo
habria que ver que es lo que estan comparando
(23:37:23) alvherre: Como decia antes, la comparativa tipica
MySQL/Postgres se hace con tablas MyISAM ...
(23:37:24) thranduilk: ahora tiene mucha años de experiencia en
cuento a ser un RBMS
(23:37:36) alvherre: pero las tablas MyISAM no soportan transacciones
(23:37:39) thranduilk: crees que llegue o ya es un buen competidor de PostgreSQL
(23:37:41) alvherre: por lo que la comparacion no es buena realmente.
(23:37:56) alvherre: Habria que ver que fue lo que compararon los tios
de Firebird.
(23:38:19) alvherre: me parece, pero no lo se, que Firebird es un
excelente RDBMS o SGBD
(23:38:34) alvherre: pero la comunidad de desarrollo es mas pequeña
que la de Postgres y por lo tanto anda mas lento
(23:38:48) alvherre: no sabria decir que ira a pasar en el futuro
(23:39:13) ***Mirko pregunta
(23:39:20) alvherre: pregunta
(23:39:43) thranduilk: la comparacion se hizo en cuanto a la seleccion
insercion y manipulacion y la verdad fue mucha la diferencia con
PostgreSQL
(23:39:56) thranduilk: claro fuero un monton enorme de datos
(23:39:57) alvherre: tienes la URL?
(23:40:22) alvherre: (entretanto, Mirko, puedes ir preguntando)
(23:40:26) Mirko: Alvaro, cuánto hay de cierto que PostgreSQL tiene
un mejor desempeño en FreeBSD, existe algún benchmarking que
respalde esto?
(23:40:41) alvherre: ah, de eso no tengo idea, lo siento :-)
(23:40:47) alvherre: creo que puede depender del FS.
(23:41:16) alvherre: me imagino que mas que el rendimiento, sera
importante que uno sea capaz de mantener el sistema operativo en buen
estado
(23:41:37) alvherre: y manejarse con el facilmente
(23:41:46) alvherre: mas que un 2% o 5% de rendimiento extra
(23:41:58) alvherre: a menos que seas Yahoo! o tengas unos
requerimientos muy apretados ...
(23:42:03) wyr3x: chau gente...un placer conocerlos y leerlos
(23:42:10) Tauro: alvaro: dejame comentar antes de concluir, para
quien este interesado: existe la posibilidad de armar un curso/taller
de Postgresql, con la presencia de Alvaro. Quien este interesado en
conocer en profundidad, puede escribir un correo a
ricardoeureka@gmail.com, cuando tengamos mas precisiones le haremos
saber.
(23:42:22) Mirko: ok gracias por la respuesta, no te olvides de
dejarnos tu memoria de tÃÂtulo Alvaro
(23:42:32) alvherre: ok!
(23:42:47) alvherre: Le pedire a Tauro que la ponga junto con el
registro de la charla
(23:42:48) Tauro: si Mirko luego la anexo a los logs
(23:43:00) alvherre: mi correo electronico:
(23:43:12) alvherre: alvherre@alvh.no-ip.org
(23:43:14) c354r1t0: Tauro, en lÃnea por favor
(23:43:18) c354r1t0: alvherre, vale, yo estuve en el primer foro de
tecnologÃa libre, donde estuviste presente, no he podido asistir
más, intentarÃ(c) este año...
(23:43:27) Tauro: si c354r1t0 es la idea
(23:43:35) c354r1t0: Tauro, vale
(23:43:36) alvherre: para preguntas tecnicas, en todo caso, sugiero
usar la lista pgsql-es-ayuda
(23:43:52) alvherre: es muy probable que yo los reenvie a la lista si
me preguntan algo directmente :-)
(23:44:02) guis: lastima llegue muy tarde.... saludos a todos....
(23:44:19) Tauro: guis puedes revisar los logs en informaticalibre.com.ar/conf
(23:44:29) Tauro: bueno, creo que hemos abusado del tiempo de Alvaro
(23:44:33) guis: excelente, te lo agradezco.
(23:44:34) alvherre: y despues voy a contestar yo mismo en la lista ...
(23:44:45) alvherre: ja!
(23:44:49) Tauro: sinceramente Alvaro, no tengo palabras para
agradecerte lo que nos has hecho disfrutar esta noche
(23:44:56) Tauro: propongo un fortisimo CLAP
(23:44:58) Tauro: CLAP
(23:45:01) c354r1t0: CLAP
(23:45:19) alvherre: Si uno no aprovecha el tiempo en hacer cosas
utiles, el tiempo se pierde. Por mi parte, estoy feliz de estar aca y
participar de estas cosas
(23:45:30) nohelia: CLAP
(23:45:41) cacho: Grande Alvaro!!!!
(23:45:42) Mirko: clap clap clap
(23:45:43) anubarak: CLAP
(23:45:44) sabino: Gracias! CLAP
(23:45:47) a1ex: gracias, por la charla
(23:45:47) Tauro: gracias a todos los presentes tambien por estar presentes!
(23:45:47) a4: clap *
(23:45:48) markito: clap clap
(23:45:50) nmag: clap clap clap
(23:45:56) c354r1t0: tristemente llegue tarde, tambiÃ(c)n, gracias a
Alvaro y a los organizadores
(23:46:36) Rubencho: para la proxima... con Skype! multi-conferencia :-D
(23:46:39) Rubencho: clap
(23:46:52) cacho: Perdon la ignorancia... Como puedo conseguir el log?
(23:47:02) Tauro: cacho: estara disponible a partir de mañana en
(23:47:10) Tauro: informaticalibre.com.ar/conf
(23:47:21) alvherre: muchas gracias a todos!
(23:47:24) guis: Gracias Tauro
(23:47:35) cacho: muchisimas gracias a Alvaro y Solar por supuesto.
(23:47:47) alvherre: si esto fuera una charla presencial, habria
sorteado una botella de vino entre los que hicieron preguntas :-)
(23:47:54) Tauro: jajaja
(23:48:05) a1ex: :-D
(23:48:06) Mirko: buena voz
(23:48:14) Tauro: los invito a seguir participando de l ciclo!
(23:48:33) Rubencho: se agradece Tauro.
(23:48:48) alvherre: mucha suerte a todos
(23:48:53) alvherre: y exito en todos los proyectos que empredan
(23:48:59) c354r1t0: alvherre, pendiente con la botella, jeje
(23:49:03) alvherre: ... salvo, claro, en los que empleen MySQL u Oracle
(23:49:18) c354r1t0: alvherre, gracias, y ... hasta la lista!
(23:49:26) alvherre: ja ja ja
(23:49:37) alvherre: hasta la lista será entonces
(23:49:48) Tauro: adios a todos y dejamos a alvaro ir a descansar!
(23:49:58) Tauro: por supuesto , pueden quedarse charlando hasta
cuando quieran :)
(23:50:08) Rubencho: descansar?.... jajaja...
(23:50:11) alvherre: eso es ... buenas noches para todos
(23:50:14) guis: Saludos desde Toluca Mexico....a todos..... BYE