¿Cuál SGBD usar para un nuevo proyecto? ¿PostgreSQL o FireBird?

523 views
Skip to first unread message

Fabricio Sandoval

unread,
May 5, 2013, 4:13:35 PM5/5/13
to sistemas-gestores...@googlegroups.com
Hola compañeros del foro

Voy a iniciar un nuevo proyecto, el escenario a grandes rasgos será: 

- usarlo en intranet 15-30 usuarios concurrentes, 
- replicación con 3 puntos geográficos, 
- 5-10 usuarios concurrentes en los otros puntos geográficos
- 10-15 usuarios que accederán desde su laptop

Se desea motor libre para ahorrar costos de software de licencias de uso.

No he trabajado con ningún motor libre, ¿cuál me recomiendan? si pudieran y dijeran ¿por qué?

Gracias de antemano por sus aportes

Fabricio


Walter R. Ojeda Valiente

unread,
May 5, 2013, 9:08:35 PM5/5/13
to sistemas-gestores...@googlegroups.com
Yo sin dudas que usaría Firebird, es demasiado poderoso, muy completo, muy fácil de usar, muy fácil de aprender y siempre gratis.

En mi blog puedes encontrar un montón de artículos dirigidos a principiantes, intermedios y avanzados, todos los días le agrego uno o dos artículos así que siempre hay algo nuevo.


Si haces click sobre el botón "Seguir" que se encuentra abajo y a la derecha de las páginas, recibirás un e-mail cada vez que un nuevo artículo sea publicado.

Saludos.

Walter.









2013/5/5 Fabricio Sandoval <fabricio....@gmail.com>

Fabricio


--
Has recibido este mensaje porque estás suscrito al grupo "Sistemas Gestores de Bases de Datos" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/sistemas-gestores-de-bases-de-datos?hl=es-419.
 
 



--
Hay 10 clases de personas. Las que conocen aritmética binaria y las que no.

Fabricio Sandoval

unread,
May 5, 2013, 9:46:37 PM5/5/13
to sistemas-gestores...@googlegroups.com
Muchas gracias Walter, voy a hacerlo con Firebird, voy a descargarlo y buscar información.

Ya me subscribi a tu blog

Gracias nuevamente

Fabricio

Carlos Miguel FARIAS

unread,
May 6, 2013, 6:10:32 AM5/6/13
to sistemas-gestores...@googlegroups.com

Depende de donde almacenas los datos, si son servidores propios o alquilados. Si son alquilados posiblemente sea mas fácil conseguir postgreSQL, si son propios, para ese volumen de usuarios firebird posiblemente es mas fácil de administrar.
Saludos: Miguel, La Pampa, (RA)

Fabricio Sandoval

unread,
May 9, 2013, 11:01:20 PM5/9/13
to sistemas-gestores...@googlegroups.com
Son servidores propios, así que creo que le debo entrar a Firebird

Gracias

Fabricio

Analyzer

unread,
May 10, 2013, 11:07:37 AM5/10/13
to sgbd
Ojo, que me han comentado varias veces que en Firebird todo se maneja con Transacciones, así que si no domina el tema, es hora de estudiar..!!

Me pregunto si el tema de transacciones, es absolutamente necesario en una LAN con 20 equipos (quizás lo máximo para lo que ocupe mi software de hoteles, porque generalmente el software de un hotel solo se instala en la recepción del hotel y en una o dos oficinas de la administración).

¿En ese escenario, requiero del tema de las transacciones con Firebird de forma obligatoria?..


Saludos!

Carlos Miguel FARIAS

unread,
May 10, 2013, 12:20:01 PM5/10/13
to sistemas-gestores...@googlegroups.com
Todos los SGBD +/- decentes manejan Transacciones, aunque solo sea sobre una sola instrucción.

Analyzer

unread,
May 10, 2013, 12:26:15 PM5/10/13
to sgbd
Es cierto.. El asunto es que nunca he requerido del uso de transacciones con Mysql (para el escenario que describí, claro).

De ahi la pregunta de que si son absolutamente "obligatorias" con Firebird, ya que ahí se enfatiza mas el tema de las transacciones..

Es decir, son recomendables, pero "son obligatorias" en el escenario que describí?..


Saludos!

Carlos Miguel FARIAS

unread,
May 10, 2013, 12:30:47 PM5/10/13
to sistemas-gestores...@googlegroups.com
Todo SGBD que cumple con reglas ACID, utiliza transacciones, para cualquier operación

Analyzer

unread,
May 10, 2013, 12:59:20 PM5/10/13
to sgbd
o o ... Otro "bujero" en mi formación académica.. A estudiar que no queda de otra..


Saludos!

Alfonso Ramirez Diaz

unread,
May 10, 2013, 1:05:12 PM5/10/13
to sistemas-gestores...@googlegroups.com
Me disculpan tal vez me equivoque, si bien cualquier motor de base de datos que cumple con ACID tiene transacciones estas no son obligatorias, yo trabajo con SQL SERVER, MYSQL, POSTGRESQL y puedo decidir si ocupo o no transacciones.

Alfonso Ramirez Diaz
Gestpyme - Informatica y Gestión
Fono: 055-833233
Movil: 09-82239821

Analyzer

unread,
May 10, 2013, 1:10:14 PM5/10/13
to sgbd
The battle "To use transactions Vs. Not to use transactions"..

Starring "Alfonso Ramirez", "CMF".

Cast: Analyzer, the rest of the forum..

To be continued..

Saludos de Viernes !!

Grisson Gil

unread,
May 10, 2013, 12:29:50 PM5/10/13
to sistemas-gestores...@googlegroups.com

jaja…esta buena esa pelicula…

 

regards

 

grisson

Walter R. Ojeda Valiente

unread,
May 10, 2013, 4:11:54 PM5/10/13
to sistemas-gestores...@googlegroups.com
No puedes tener ACID sin transacciones, es imposible.

Otra cosa muy distinta es que debas especificar obligatoriamente los parámetros de inicio de la transacción.

Por ejemplo, en Visual FoxPro es opcional, si tú no inicias una transacción el mismo Visual FoxPro la inicia por tí con los parámetros que por defecto tienen las transacciones en tu SGBDR.

Ejemplo:

lcConsulta = "SELECT * FROM PRODUCTOS"

=SQLEXEC(gnHandle, lcConsulta)

Aquí, en ningún momento se le pidió al Visual FoxPro que inicie la transacción pero él la inició en forma automática ahorrándote esa tarea. Sin embargo, no te olvides de un detalle importante: la inició con los parámetros por defecto, que para el caso del Firebird son:

READ WRITE, SNAPSHOT, WAIT

READ WRITE significa que podrás realizar operaciones de INSERT, DELETE, UPDATE dentro de esa transacción

SNAPSHOT que la transacción solamente sabrá de la existencia de las filas que fueron "commiteadas" antes de que dicha transacción empezara

WAIT que en caso de conflicto con otra transacción al querer actualizar o borrar una fila, el Firebird esperará hasta que la primera transacción termine

Este es el caso general, pero no siempre es el más adecuado para tí. Por ejemplo, si tu transacción solamente tendrá un SELECT (o varios SELECT) sería mejor que la transacción fuera READ ONLY porque eso acelerará que te muestre los resultados.

A todo esto, no debes olvidarte de finalizar todas las transacciones, sea con un COMMIT o con un ROLLBACK, para que no se queden transacciones "colgadas". Inclusive las transacciones que solamente tienen un SELECT deben ser finalizadas (en el caso de las transacciones que solamente tienen SELECT se recomienda usar COMMIT, porque es más rápido que ROLLBACK).

Saludos.

Walter.



















2013/5/10 Grisson Gil <griss...@gmail.com>



--

Alfonso Ramirez Diaz

unread,
May 10, 2013, 4:29:46 PM5/10/13
to sistemas-gestores...@googlegroups.com
Estimado.

Mi intención no es discutir tu punto de vista que es correcto, pero yo puedo usar cualquier motor de base de datos SQL o ACID sin necesidad de usar transacciones, no es obligatorio, obviamente si es recomendado cuando en una operación trabajas con 2 o mas tablas al mismo tiempo, pero de que sirve una transacción cuando usas una sola tabla y actualizas un solo registro ?

En la mayoría de los motores de bases de datos debes iniciar la transacción con una instrucción y terminarla con una instrucción, si estas instrucciones no están dentro de los comandos que envías al servidor por mucho que sea ORACLE o SQL SERVER no harán una transacción ni por arte de magia.

Creo que la pregunta era si era obligatorio usar transacciones o no, pues no es obligatorio, yo decido cuando usar o no usar transacciones.


Walter R. Ojeda Valiente

unread,
May 10, 2013, 5:27:10 PM5/10/13
to sistemas-gestores...@googlegroups.com
Yo tampoco quiero discutir contigo, pero simplemente parece que no comprendes lo que es ACID ni el concepto de transacciones, deberías informarte al respecto, hay muchísimo material en Internet que puedes consultar.

Usar transacciones es obligatorio en ACID, no puedes librarte de las transacciones o no tendrás ACID, es así de simple.

Sin embargo, tienes dos opciones (como expliqué en el e-mail anterior):
1. Tú le indicas al Servidor que inicie una transacción
2. El Servidor inicia la transacción automáticamente

(Y aquí debo hacer una corrección al e-mail anterior, allí escribí que era el Visual FoxPro quien iniciaba la transacción automáticamente con los parámetros por defecto pero luego de pensar un poco en el tema me dí cuenta que no es así, es el Servidor del Firebird, o del motor que sea, quien inicia la transacción con los parámetros por defecto).

En el caso de ORACLE, según algunas páginas web que acabo de leer, no cumple totalmente con ACID, aquí uno de los enlaces:


y el texto: "This basically means Oracle is not fully ACID complaint." En castellano: "Esto básicamente significa que ORACLE no cumple con ACID totalmente"

Según Microsoft, SQL Server sí cumple con ACID, y MySQL depende, como puedes leer aquí:


Ese "depende" en el caso de MySQL es según si usa InnoDB y Cluster, en caso afirmativo sí usa ACID.

Firebird, en cambio, usa ACID al 100% y esa es justamente una de las razones que lo hacen tan confiable.

Saludos.

Walter.




























2013/5/10 Alfonso Ramirez Diaz <ae...@gestpyme.cl>

Alfonso Ramirez Diaz

unread,
May 10, 2013, 5:58:28 PM5/10/13
to sistemas-gestores...@googlegroups.com
Estimado en mis programas uso transacciones y también conozco el concepto de ACID, por suerte aprendi a leer hace un par de años, porque te enojas si alguién tiene un punto de vista diferente, la pregunta es puntual, se puede usar un servidor de bases de datos sin transacciones, si se puede.

Que el servidor de base de datos cumpla con ACID no significa que debes usarlo, solo significa que esta disponible porque tan porfiado y porque intentas ofender a la gente con tus conocimientos, hay muchos programadores que tienen muchos conocimientos sobre base de datos y lenguajes, incluyendome, no hay necesidad de discutir, solo estoy contestando una pregunta puntual.

Te respondo con una pregunta: En SQL Server puedo trabajar sin transacciones ?

Te voy a responder: Si puedo trabajar sin transacciones sin ningún problema y SQL Server seguira siendo ACID.

Si el motor es ACID no significa que tu programa sera ACID, solo sera si lo deseas, personalmente ocupo las transacciones cuando involucro dos o mas tablas, pero cuando es una sola tabla no uso transacciones y sigue siendo un motor ACID, el motor no se hace ningún problema.

Walter R. Ojeda Valiente

unread,
May 10, 2013, 7:13:55 PM5/10/13
to sistemas-gestores...@googlegroups.com
Bueno, primero, aclararte que no tuve la intención de ofenderte. Nunca esa es mi intención si alguien no me ofende primero, aunque reconozco que a veces mi forma de escribir puede resultar chocante.

Segundo, no estoy enojado ni nada de eso.

Tercero, si puedes realizar operaciones sin transacciones entonces tu motor no cumple totalmente con ACID. Punto.

La letra "I" en ACID significa "Isolation" la cual traducida al castellano es "Aislamiento". Si puedes escribir cualquier operación (INSERT, DELETE, UPDATE, SELECT) fuera de una transacción entonces dicha operación no está aislada. Y si no está aislada entonces tu motor no cumple con ACID, es así de simple.

Probablemente lo que sucede y que desconoces es que el propio Servidor inicia una transacción cuando tú no se lo pides específicamente. Al menos el Servidor del Firebird hace eso.

Y claro, como no sabes que el Servidor inició la transacción automáticamente crees que tu operación está afuera de la transacción, cuando no es así.

Si le puedes decir a tu motor "ahora usa ACID, ahora no uses ACID" entonces ese motor no cumple con ACID siempre, sino que depende. Es el caso de MySQL.

La única forma de que el contenido y las operaciones que realices en tu Base de Datos sean confiables es si cumple con ACID siempre, el 100% de las veces, no a veces sí y a veces no. Firebird cumple con ACID el 100% de las veces.

He leído en un e-mail anterior tuyo que no usas transacciones cuando solamente tienes un SELECT. Si tu motor realmente te permite algo así entonces ese SELECT no está aislado y si no está aislado entonces otras operaciones pueden estar interfiriendo con él.

Ejemplo:

SELECT PRD_CODIGO, PRD_NOMBRE, PRD_PREVTA FROM PRODUCTOS

Ese SELECT mostrará los Códigos, Nombres y Precios de Venta de todos los productos. Podría usarse para imprimir un informe y entregárselo a los vendedores.

Tienes 2000 productos, y antes de que se imprima el número 800 alguien le cambió el Precio de Venta. Después que se imprimió el número 200 alguien le cambió el Precio de Venta.

Vuelves a escribir ese mismísimo SELECT y obtendrás un resultado distinto.

Algo así puede ser aceptable a veces y totalmente inaceptable en otras circunstancias. Al tener a tu SELECT fuera de una transacción no puedes determinar su comportamiento, el Servidor lo determinará por tí. Y a veces puede acertar y a veces equivocarse.

En cambio, si el SELECT está dentro de una transacción siempre se comportará exactamente como tú deseas que se comporte. Siempre.

Quisiera que me envíes un enlace donde se lea que con SQL SERVER puedes elegir si usarás transacciones o no, porque yo busqué y no lo encontré. Pero como eres tú quien usa ese motor supongo que tendrás enlaces de fuentes serias (preferiblemente Microsoft) que digan tal cosa.

Cuarto, este intercambio de e-mails ya me dio tema para escribir un artículo en mi blog:


si a alguien le interesa leer dicho artículo, para mañana ya estará disponible.

Saludos.

Walter.





















Hernan Cano

unread,
May 10, 2013, 8:04:22 PM5/10/13
to sistemas-gestores...@googlegroups.com
Las transacciones siempre son recomendables.
 
Son "obligatorias" (1) si el motor así lo indixca (si estás preguntando es porque no hay certeza por parte del motor --que sean obligatorias--) o (2) si el empresa para la que trabajas así te lo indica.

Si encontraste en alguna parte una frase que indica que sean obligatorias, debes aclararlo ahí.

No insistas tanto: lo primordial que debes saber sobre transacciones es que la mayoría de los motores las ofrecen (no quiero descaracharle diciendo que

Hernan Cano

unread,
May 10, 2013, 8:07:27 PM5/10/13
to sistemas-gestores...@googlegroups.com
Si encontraste en alguna parte una frase que indica que sean obligatorias, debes aclararlo ahí.

No insistas tanto: lo primordial que debes saber sobre transacciones es que la mayoría de los motores las ofrecen (no quiero descaracharle diciendo que TODOS LOS MOTORES LAS OFRECEN). 
Y también que un "buen" programador (y/o un "buen" programa) deberían utilizarlas siempre (deberían..deberían..deberían..).
 

Walter R. Ojeda Valiente

unread,
May 10, 2013, 9:53:40 PM5/10/13
to sistemas-gestores...@googlegroups.com
Bien, para quienes quieran saber más sobre los conceptos de ACID y de transacciones (o repasar dichos conceptos) aquí está el artículo de mi blog:


Saludos.

Walter.






2013/5/10 Hernan Cano <jherna...@gmail.com>
Si encontraste en alguna parte una frase que indica que sean obligatorias, debes aclararlo ahí.

No insistas tanto: lo primordial que debes saber sobre transacciones es que la mayoría de los motores las ofrecen (no quiero descaracharle diciendo que TODOS LOS MOTORES LAS OFRECEN). 
Y también que un "buen" programador (y/o un "buen" programa) deberían utilizarlas siempre (deberían..deberían..deberían..).
 

--
Has recibido este mensaje porque estás suscrito al grupo "Sistemas Gestores de Bases de Datos" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/sistemas-gestores-de-bases-de-datos?hl=es-419.
 
 



--

Oscar b

unread,
Jul 12, 2015, 10:50:38 AM7/12/15
to sistemas-gestores...@googlegroups.com
Y entonces?  en que quedò la pregunta inicial?
POSTGRESQL o FIREBIRD?
Cual seria la mejor opcion?

en mi caso es similiar:  de ambos dicen que son gratuitos y permiten el manejo de transacciones, etc etc.   pero cual es mejor?
he escuchado que firebird no ha madurado aun para conexiones a la base de datos desde internet para aplicaciones de escritorio.

Que mas pueden decir los que saben?

Walter R. Ojeda Valiente

unread,
Jul 12, 2015, 11:22:59 AM7/12/15
to sistemas-gestores...@googlegroups.com
Con Firebird se pueden hacer aplicaciones de escritorio que usen bases de datos remotas a las cuales se conecta por Internet, pero es cierto, no es el más rápido en eso, su fuerte son las aplicaciones en redes locales, allí su velocidad es altísima.

El rendimiento en Internet es aceptable, la gran mayoría de los usuarios no nota la diferencia, pero en aplicaciones que requieren un uso intensivo de Internet no es la mejor opción.

Por otro lado, para aplicaciones que se ejecutarán mayormente en redes locales, es posiblemente la mejor opción. No solamente por la velocidad, sino también por lo poderoso que es y la gran facilidad de instalación y de administración.

Así que la decisión debería basarse en cuanto de Internet necesitas, ahora y en un futuro próximo.

Saludos.

Walter.


--
Has recibido este mensaje porque estás suscrito al grupo "Sistemas Gestores de Bases de Datos" de Grupos de Google.
Reply all
Reply to author
Forward
0 new messages