¿Es CPAN DBI la mejor interfaz de base de datos para usar en Perl para el uso general de la base de datos? ¿Hay algunas mejores opciones?¿Qué interfaz de la base de datos Perl debería usar?
Respuesta
Si usted está buscando para el acceso de base de datos de bajo nivel — le da de comer cualquier cadena SQL (opcionalmente con place-holders y bind values) y ejecuta su consulta y le devuelve los resultados — entonces sí, DBI es su mejor apuesta, de lejos.
Si desea una interfaz de nivel superior (es decir, una que requiera poco o ningún uso de SQL sin procesar en su código), existen varios ORM (object-relational mappers) disponibles para Perl. Consulte la página ORM en Perl 5 wiki de Perl Foundation para obtener más información y enlaces. (Si desea ayuda para elegir entre ellos o tiene preguntas específicas, puede limitar el enfoque de esta pregunta o quizás publicar otra).
Echa un vistazo a Class::DBI también.
En mi opinión, DBI es una muy buena opción. He usado DBD :: mysql activamente y he encontrado que es una muy buena solución.
También utilizamos el módulo DBI en todos nuestros proyectos. Muchas veces creamos un paquete personalizado además de la aplicación específica, pero debajo está el módulo central de DBI. Y a menudo es simplemente más fácil usar las funciones del módulo DBI directamente.
DBI es la interfaz de "bajo nivel" entre Perl y un DBMS. Es prácticamente la única opción realista para hacerlo. Comparable a JDBC en Java. Estaría loco (o tiene un caso de uso muy específico) para elegir cualquier cosa que no sea DBI para su interfaz de bajo nivel entre Perl y una base de datos.
Además de DBI, hay varios mapeadores de objetos/relacionales que hacen que trabajar con una base de datos sea mucho más fácil y más limpio.
Algunos de los más comunes/más populares son
DBI es excelente, pero la calidad de los módulos DBD puede variar. Fui mordido por una 'característica' en una de las versiones de DBD: pg. Le gustaba cargar los datos completos de su resultado en la memoria, en lugar de analizarlos con los cursores.
Como de costumbre - Programa de advertencia.
Si desea trabajar con objetos (¡con introspección!), Eche un vistazo a Fey :: ORM que implementa ORM basado en Moose. También tiene una sintaxis similar a la de SQL, por lo que encaja mejor en mi cerebro basado en RDBMS que algunos de otros marcos ORM.
DBI rocks! pero para un ORM completo con todas las funciones que sea rápido, vaya a DBIx :: Class todo el tiempo.
Si eligió utilizar DBI
para una tarea que no necesita un ORM, I le sugiero encarecidamente que consulte DBIx::Simple.
No es un reemplazo, pero una API muy bien diseñado en la parte superior de DBI
que hace las cosas simples cosas simples y complejas posibles, sin perder ninguna de la flexibilidad de DBI
.
¿Alguna vez se encontró que había que buscar cosas aparentemente sencillas en la documentación DBI
, como conseguir los resultados de una consulta como un arrayref (filas) de hash (columnas y sus valores)? Con DBIx::Simple
esto es sencillo:
# DBI
my $rows = $dbh->selectall_arrayref($sql, { Slice => {} });
# tell it we want "hashes" (yuck!) ^^^^
# DBIx::Simple
my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!
Tome un vistazo a la examples por más. Además, la integración con SQL::Abstract hace que las consultas simples sean muy sencillas. Lo uso en todo mi código donde habría usado DBI
antes, y No estoy mirando hacia atrás.
Vale la pena señalar que la gran mayoría de las interfaces de "nivel superior" (como SQL :: Resumen) y (DBIx :: Simple) usan DBI en sí cuando realizan las consultas. DBI es prácticamente el método estándar aceptado para la conexión de bases de datos en Perl.
Básicamente, debe estar acostumbrado a utilizar DBI en primer lugar.
¿Cómo responde esto la pregunta? – ImaginaryHuman072889
- 1. ¿Qué estructura web de Perl debería usar?
- 2. ¿Cuándo debería usar AUTOLOAD de Perl? En
- 3. base de datos de Cassandra, ¿qué interfaz de python?
- 4. ¿Cuándo debería usar el generador de interfaz?
- 5. ¿Por qué usar la base de datos sqlite en Android?
- 6. ¿Qué versión de Perl debería usar en Windows?
- 7. ¿Cuándo debería usar una base de datos de objetos?
- 8. SharePoint: ¿debería usar listas o una base de datos?
- 9. ¿Dónde están las diferencias usando la base de datos XML y MySQL? ¿Qué debería usar?
- 10. ¿Qué módulo de Perl debería usar para generar un formulario web de CRUD válido?
- 11. Composición vs Herencia. ¿Qué debería usar para mi biblioteca de interacción de base de datos?
- 12. ¿Qué depósito de JavaScript debería usar?
- 13. ¿Qué paquete postgresql debería usar?
- 14. ¿Qué base de datos liviana debería usar en una extensión de Firefox?
- 15. ¿Por qué debería usar Drools?
- 16. ¿Cuándo/por qué debería comenzar a usar una base de datos?
- 17. ¿Por qué debería usar MXML?
- 18. ¿Por qué debería usar @properties?
- 19. ¿Qué base de datos NoSQL usar como reemplazo de MySQL?
- 20. ¿Qué API de Documentum debería usar?
- 21. Datos de configuración en Scala - ¿Debería usar la mónada Reader?
- 22. ¿Qué Python debería usar?
- 23. Limpieza de la enorme base de datos de Perl
- 24. Perl DBI sin acceder a la base de datos
- 25. ¿Cómo usar la misma base de datos SQLite3 de múltiples procesos Perl?
- 26. ¿Qué debería saber todo hacker Perl sobre perl -ne?
- 27. ¿Qué visualizador de base de datos usar para CouchDB?
- 28. ¿Cuándo debería usar & para llamar a una subrutina de Perl?
- 29. ¿Por qué debería usar la ubicación nueva?
- 30. ¿Cuándo debería usar una base de datos NoSQL en lugar de una base de datos relacional? ¿Está bien usar ambos en el mismo sitio?
DBIx :: Simple permite un acceso mucho más limpio a los resultados por nombre, en lugar del extraño método hash utilizado por DBI o por índice de matriz (que puede moverse si las tablas cambian de formato). –