Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ¿Firebird soporta consultas que devuelven más de un cursor ("record set")? (https://www.clubdelphi.com/foros/showthread.php?t=81376)

Al González 08-11-2012 20:34:35

¿Firebird soporta consultas que devuelven más de un cursor ("record set")?
 
Leyendo este artículo de nuestro compañero poliburro (recomiendo su recién iniciado blog), supe que MS SQL Server soporta consultas que regresan más de un cursor o record sets. No me extraña de ese motor, dada su fama de añadir cuanta cosa Microsoft considera útil sin consensuarlo con la industria.

La característica me parece buena y, como no estoy actualizado en Firebird, desconozco si éste último posee ya algo similar o lo proyecta tener. De ahí el título de este hilo. Llama la atención que tanto PostgreSQL como MySQL sí cuenten con esa característica, según se menciona ahí.

La intención no es generar polémicas (aunque sé que será inevitable :D). Sino conocer un poco más sobre esto y sacar a la luz lo que a Firebird concierna (presente o futuro).

Saludos múltiples.

Casimiro Notevi 08-11-2012 20:59:25

Nunca había oido sobre esa característica.
He hecho una búsqueda por google y no he encontrado nada al respecto.
:confused:

poliburro 08-11-2012 21:17:38

Cita:

Empezado por Al González (Mensaje 448967)
Leyendo este artículo de nuestro compañero poliburro (recomiendo su recién iniciado blog), supe que MS SQL Server soporta consultas que regresan más de un cursor o record sets. No me extraña de ese motor, dada su fama de añadir cuanta cosa Microsoft considera útil sin consensuarlo con la industria.

Saludos Al, como te respondí en mi blog, esta es una característica presente en Oracle, Sql Server, Mysql, Db2 y PostgreSql. Hablo de esos motores pues son los que más uso y dónde he probado el retorno de múltiples recordsets.

No se si lo soporte Firebird, supongo que sería algo más por agregar a la larga lista de "cosas" que no soporta.

Saludox

Edito. :) Gracias por la recomendación...

Casimiro Notevi 08-11-2012 21:28:27

Cita:

Empezado por poliburro (Mensaje 448971)
No se si lo soporte Firebird, supongo que sería algo más por agregar a la larga lista de "cosas" que no soporta.

¿Y cuál es esa larga lista? :confused:

poliburro 08-11-2012 21:33:15

Algunas serían:
  • Soporte XML
  • Soporte para XML SCHEMA
  • Soporte ETL
  • Soporte de conectividad entre pares
  • Soporte de conectividad entre diferentes
  • Visibilidad entre diferentes esquemas del mismo servidor

poliburro 08-11-2012 21:34:27

Por cierto... no me gusta la idea de debatir sobre si es bueno o no Firebird. si a ustedes les gusta me parece bien. A mi en lo personal no me gusta ese motor de base de datos.

Casimiro Notevi 08-11-2012 22:02:45

Hombre, has empezado tú ;)

Casimiro Notevi 08-11-2012 22:07:02

Cita:

Empezado por poliburro (Mensaje 448974)
Algunas serían:
  • Soporte XML
  • Soporte para XML SCHEMA
  • Soporte ETL
  • Soporte de conectividad entre pares
  • Soporte de conectividad entre diferentes
  • Visibilidad entre diferentes esquemas del mismo servidor

Existen utilidades de terceros para XML y también ETL.
Lo de conectividad entre pares y diferentes... no tengo ni idea de qué es, ni para lo que sirve :confused:

Y ya puestos, yo considero a firebird, postgresql y mysql... muchísimo mejor que MS sql server, ya que las primeras se ejecutan en diferentes sistemas operativos, por lo que pueden funcionar desde pequeños ordenadores hasta los mayores mainframes existentes.
Sin embargo MS sql server sólo funciona sobre un simple y 'doméstico' PC con S.O. windows :D

movorack 08-11-2012 22:40:30

Hace un tiempo conocí PostgreSQL y dejé de usar firebird. Pero si hay muchas cosas de este rdbms que vienen muy de la mano con delphi (Recordar que firebird viene de interbase un producto nacido en inprise y muy cercano a borland) y lo que me gustó de PostgreSQL era la posibilidad de utilizar el mismo motor en PHP y Delphi de una manera muy transparente.

Pero hace ya casi dos años logré trabajar MS-SQL de la mano de la empresa donde trabajé hasta hace muy poco. y me dí cuenta que en entornos empresariales, la batalla MS-SQL vs Mysql/PostgreSQL/Firebird la gana siempre MS-SQL y no solamente por ser Microsoft sino por su seguridad, la facilidad de administración, tareas integradas con las tareas del windows server, integración con active directory y además que montado en un buen servidor ofrece muy buenos rendimientos.

Dificilmente veo a Firebird/Mysql (Open Source)/PostgreSQL (Usa Kerberos) totalmente integrados (o por lo menos de forma nativa al rdbms) en una empresa cuya infraestructura de red se base en un Active Directory y requieran que los usuarios del dominio ingresen con su propio usuario (del dominio) y contraseña al aplicativo.

¿El hecho de que MS sql server funcione desde un simple y 'domestico' PC con S.O. windows no debería ser una ventaja mas que una desventaja?
¿No es ese uno de los puntos claves de Firebird y otros que pueden funcionar en equipos que van desde pc hasta grandes servidores o clusteres?
¿El hecho de que solo funcione en Windows es en realidad una desventaja cuando logras una grán integración con el S.O. y los demás servicios del mismo y que además cuando está sobre Windows Server ofrece muchas ventajas para los administradores de recursos de red?

No es una defensa o venir a decir que uno es malo u otro es bueno. Solo que no podemos comportarnos tipo fanboy con su smartphone (sea cual sea) y demonizar cualquier critica sea sana o no.

Aquí les dejo un link de comparaciones de estas y algunas otras bases de datos

poliburro 08-11-2012 22:48:15

Cita:

Empezado por Casimiro Notevi (Mensaje 448980)
Existen utilidades de terceros para XML y también ETL.
Lo de conectividad entre pares y diferentes... no tengo ni idea de qué es, ni para lo que sirve :confused:

¿y qué utilidades son? Me gusta mucho trabajar en bases de datos y firebird no me ha convencido por la falta de ese soporte. Sería un aliciente para mi el conocer sobre esas herramientas de terceros.

La conectividad entre múltiples servidores de bases de base de datos te permiten implementar soluciones nativas para replicación de información. O para la consulta entre diferenets orígenes de datos: Algo como

Código SQL [-]
 
Select Servidor1.Data, Servidor2.Data
  from servidor1.schema.table1 tserv1
left join servidor2.schema.table1 tserv2
     on tserv1.keyfield = tserv2.keyfield

es sumamente útil. Al igual el poder hacer consultas entre diferentes esquemas del motor de base de datos. O poder hacer consultas de manera directa a servidores de diferente vendedor.


Sobre que MsSql no corre en otros OS, eso es cierto pero para ello tienes alternativas como Oracle, Db2 o PotgreSql. Yo jamás eligiría Firebird ni para windows o linux.

Sobre que MsSql solo corre en pcs domésticas, bueno allí que te puedo decir, me parece más una opinión al aire para denostar algo que se desconoce.

Ojo, Soy un gran fan de los motores de bases de datos en general. Me gusta mucho trabajar en ellos, en su administración, en su optimización así que no defiendo a uno en particular y si a todos en general.

Saludos

Y bueno a todo esto.... firebird soporta devolver mútiples resultsets?

poliburro 08-11-2012 22:50:59

Cita:

Empezado por movorack (Mensaje 448981)
No es una defensa o venir a decir que uno es malo u otro es bueno. Solo que no podemos comportarnos tipo fanboy con su smartphone (sea cual sea) y demonizar cualquier critica sea sana o no.

Total y absolutamente de acuerdo amigo movorack.

¿Por cierto, has probado la integración de fedora directory para entornos empresariales con distribuciones basadas en RedHat? Podría ser una manera de consolidar tus entornos de trabajo en ese sistema operativo.

Kipow 08-11-2012 22:57:42

Hasta donde se Firebird no lo soporta. Pero prefiero generar procedimientos independientes para cada consulta para el mejor manejo de hilos y conexiones al servidor

Casimiro Notevi 08-11-2012 23:05:55

y lo que me gustó de PostgreSQL era la posibilidad de utilizar el mismo motor en PHP y Delphi de una manera muy transparente.
Y con firebird también, lo he usado hasta yo mismo.

gana siempre MS-SQL y no solamente por ser Microsoft sino por su seguridad, la facilidad de administración, tareas integradas con las tareas del windows server, integración con active directory y además que montado en un buen servidor ofrece muy buenos rendimientos.

No puedes ni compararlo, ¿seguridad?, ¿facilidad de administración?, ¿buenos rendimientos?... con firebird...
Seguridad, después de 14 años de uso: cero fallos.
Facilidad de administración: No puedes compararlo de ninguna manera, firebird lo instalas en 30 segundos en cualquier equipo y no tienes que tocar nada. Más facilidad de administración es imposible.
Rendimiento: En todos estos años son centenares de clientes a los que hemos sustituido ms sql+windows por firebird+linux y lo primero que dicen es: ¡¡¡¡qué rapidez!!!

¿El hecho de que MS sql server funcione desde un simple y 'domestico' PC con S.O. windows no debería ser una ventaja mas que una desventaja?
No, yo no he dicho "desde", he dicho "solamente", ms sql sólo funciona en windows. Punto.

¿No es ese uno de los puntos claves de Firebird y otros que pueden funcionar en equipos que van desde pc hasta grandes servidores o clusteres?
Exacto, cosa que no puede hacer ms sql, que sólo funciona en windows.

¿El hecho de que solo funcione en Windows es en realidad una desventaja cuando logras una grán integración con el S.O. y los demás servicios del mismo y que además cuando está sobre Windows Server ofrece muchas ventajas para los administradores de recursos de red?
Sí, desde luego, es una desventaja que sólo funcione en windows.

No es una defensa o venir a decir que uno es malo u otro es bueno. Solo que no podemos comportarnos tipo fanboy con su smartphone (sea cual sea) y demonizar cualquier critica sea sana o no.
Son sólo realidades, incluso postgresql (con su fama de lento) es más rápido que ms sql server.


Cada uno tiene sus gustos, simplemente, y para mí, un RDBMS que sólo funciona en windows ya lo descartaría antes incluso de entrar en una lista para evaluarlo.
No me parece serio ni profesional un servidor empresarial con windows.
Y ya no hablemos de pagos de licencias del servidor, del sistema operativo, del RDMBS, del antivirus :eek: y de todas esas chorradas que lleva aparejadas windows.

Será que he usado unix y linux (en 1988 ya instalaba unix en las empresas) que windows me parece una atracción de feria.

¡¡¡Venga, debate!!! :D

poliburro 08-11-2012 23:09:39

Cita:

Empezado por Casimiro Notevi (Mensaje 448988)
Rendimiento: En todos estos años son centenares de clientes a los que hemos sustituido ms sql+windows por firebird+linux y lo primero que dicen es: ¡¡¡¡qué rapidez!!!


Eso depende siempre del diseñador de la base de datos y su administrador. Vieras que me han dicho lo mismo en algunos sistemas que he remplazado donde quité a un firebird lentisimo.... y lo he sustituido por otro motor.

poliburro 08-11-2012 23:10:32

Cita:

Empezado por Casimiro Notevi (Mensaje 448988)
No es una defensa o venir a decir que uno es malo u otro es bueno. Solo que no podemos comportarnos tipo fanboy con su smartphone (sea cual sea) y demonizar cualquier critica sea sana o no.
Son sólo realidades, incluso postgresql (con su fama de lento) es más rápido que ms sql server.


¿y esto lo basas en?

Casimiro Notevi 08-11-2012 23:14:32

Cita:

Empezado por poliburro (Mensaje 448990)
¿y esto lo basas en?

Aquí lo tienes :)

poliburro 08-11-2012 23:20:02

Cita:

Empezado por Casimiro Notevi (Mensaje 448991)
Aquí lo tienes :)

y lo has hecho alguna vez? o Has googleado buscando esa comparatva sin haber conseguido jamás un rendimiento mayor?

Por que te diré al menos yo si lo he comprobado y que de ahí se que es verdad. Hasta antes de sql server 2012 PostgreSql era capaz de obtener mejores tiempos de procesamiento y respuesta. Conseguirlo era muy sencillo, tan solo separabas los índices y lo colocabas en un arreglo de discos de alta velocidad y buala¡¡¡¡¡¡¡ mejora instantánea....

ojo... y no necesité remitirte a un docuemento que seguramente no has leido a cabalidad ni implementado siquiera... :)

Casimiro Notevi 08-11-2012 23:27:23

Hombre, amigo Poliburro, ahí has soltado unas frases que se las trae :confused:

No voy a ser yo quien te aclare lo que has dicho, pero vuelve a leer lo que has escrito, imagina que ha sido otra persona.
Es que no puedo creer que hayas sido tú :confused::confused::confused:

Sin comentarios.

Al González 08-11-2012 23:33:17

Cita:

Empezado por Casimiro Notevi (Mensaje 448970)
Nunca había oido sobre esa característica.
He hecho una búsqueda por google y no he encontrado nada al respecto.
:confused:

Cita:

Empezado por Kipow (Mensaje 448985)
Hasta donde se Firebird no lo soporta. Pero prefiero generar procedimientos independientes para cada consulta para el mejor manejo de hilos y conexiones al servidor

Creo que con esto se satisface mi duda, y supongo que no hay planes (que se sepa) de añadir esa útil característica.

En mi caso particular, no me parece algo de peso para dejar de usar Firebird en proyectos poco ambiciosos, como en los que habitualmente trabajo. He tenido la fortuna de usar un poco MS SQL Server, pero me siento más cómodo con Firebird por su sencillez de manejo y por lo bien que parece entenderse con Delphi. Claro que si llego a necesitar características que Firebird no tenga, habré de estudiar qué otro motor convendría usar, considerando ventajas y desventajas, cual debe ser ante cada problema que se le presenta a un desarrollador.

Y por supuesto que, ya estando en MS SQL Server, no desaprovecharía esa útil característica que poliburro explica bastante bien. :)

Un abrazo cortafuegos.

Al González.

movorack 08-11-2012 23:48:49

No... la verdad no soporta esa característica y eso está detectado desde hace mucho tiempo.

Cita:

Support stored procedure returning mutliple dataset
Created: 30/Mar/07 04:50 PM
As a MS SQL user, one of the most dissappointing limitation I run into when converting my application to Firebird is that only one dataset can be returned from the stored procedure.

In MS TSQL, the following 4 SP or function types are supported:

1. Stored procedure (both return value and multiple recordsets can be returned, but it can not be used as a table in query)
2. Scalar function (only returns a scalar value, can be used in query)
3. Inline table-valued functions (return one recordset, can be used as a table in query)
4. Multi-statement table-valued functions (return one recordset, can be used as a table in query)

#1 does not seem to be supported by Firebird. From time to time I need to return multiple related dataset from one SP to support the application. But now in Firebird, I need to split the logic into separate SPs. Even more painful is that I need to rewrite the logic in client-side too!

Without some features, it's hard to switch from MS SQL to Firebird because of the big overhead involved in the converting & testing.
enlace

Creeria yo que si aún no posee esa característica si está reportada desde el 2007. No la implementarán dentro del futuro próximo.

Cita:

¿Por cierto, has probado la integración de fedora directory para entornos empresariales con distribuciones basadas en RedHat? Podría ser una manera de consolidar tus entornos de trabajo en ese sistema operativo.
No la verdad no he usado linux desde hace un buen tiempo. :D


La franja horaria es GMT +2. Ahora son las 08:30:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi