Estoy buscando opciones para abstraer los detalles del servidor de la base de datos lejos de mi aplicación (en C++), me gustaría escribir mi código para que sea independiente del back-end de la base de datos real. Sé que MySQL tiene una buena biblioteca, pero no quiero estar atada a una sola implementación de base de datos. ¿Hay buenas opciones para esto?¿Bibliotecas de código abierto para abstraer el acceso a la base de datos en C++?
5
A
Respuesta
1
4
SOCI es bueno. Admite múltiples bases de datos, funciona bien, API moderna de estilo C++, funciona con boost.
1
Qt proporciona una capa de abstracción de base de datos. Ver: http://doc.trolltech.com/4.6/qsqldatabase.html.
1
4
Mi opinión es que se olvide de un controlador de base de datos cruzada y se concentre en buscar o crear una capa de acceso a datos entre bases de datos. Algunos aspectos:
- Las consultas complejas (léase: cualquier cosa que no sea un juguete) invariablemente terminan usando una o dos características específicas de la base de datos.
LIMIT
yOFFSET
por ejemplo, comúnmente utilizado para paginación, no es universal. - Tarde o temprano querrá la inserción masiva, y querrá que sea lo más rápido posible, porque 3 horas es mejor que 6 horas. Cada base de datos tiene una forma diferente y "óptima" de hacer esto, por lo que su DAL necesitará casos especiales de todos modos.
- Diferentes bases de datos pueden exponer diferentes mecanismos de restricción — incluso columnas personalizadas tipos — que pueden valer la pena aprovechar en la medida de lo posible (PostgreSQL es maravilloso para esto).
- Si desea hacer un almacenamiento en caché a nivel de aplicación, necesitará un DAL de todos modos.
Por lo tanto, siga adelante y use libmysql
por sí mismo, simplemente escóndelo detrás de un compilador de firewall en su DAL, y prepárese para cambiarlo más tarde. Puede protegerse de una infraestructura cambiante sin tener que usar un envoltorio de SQL de denominador común más bajo.
Si eso no concuerda contigo, echa un vistazo a SQLAPI++.
Cuestiones relacionadas
- 1. Recomendaciones para el acceso a la base de datos C#
- 2. Plugin de base de datos de código abierto para Eclipse?
- 3. Bibliotecas de código abierto para efectos de sonido en juegos
- 4. Acceso a la base de datos C#: DBNull vs null
- 5. Base de datos de gráficos de código abierto
- 6. Acceso de Android a la base de datos SQL remota
- 7. dónde descargar para la base de código abierto de apple?
- 8. Cuándo simular el acceso a la base de datos
- 9. Acceso a la base de datos de instrumentación
- 10. ¿Debería ser el caso base de código abierto?
- 11. ¿Hay algunas bibliotecas de código abierto de CAD en Java?
- 12. ¿Hay bibliotecas de gestos de código abierto en Android?
- 13. Velocidad de acceso de archivos frente a la velocidad de acceso a la base de datos
- 14. Servicios web y bibliotecas de código abierto - licencia
- 15. Proyectos de código abierto para practicar TDD/BDD en C#
- 16. ¿Existe una solución de código abierto para el acceso a archivos transaccionales XA en Java?
- 17. código C - acceso a la memoria/apropiación
- 18. Android - Acceso a la base de datos en línea SQlite
- 19. Acceso a la base de datos de Music Genome
- 20. ¿La mejor práctica para gestionar cambios en bibliotecas de código abierto de terceros?
- 21. Programas/bibliotecas de análisis financieros libres o de código abierto
- 22. ¿Qué bibliotecas C o C++ de código abierto pueden convertir arbitrariamente UTF-32 en NFC?
- 23. Código abierto compilador/convertidor C++ a C#
- 24. Código analizador de código abierto para el marcado Mediawiki
- 25. Cómo organizar el proyecto para la versión de código abierto
- 26. ¿Proyecto de código abierto para el desarrollador de C++?
- 27. Buscando una biblioteca de código abierto de base de datos plana/xml Biblioteca C++
- 28. ¿Es C de código abierto?
- 29. Buen código fuente abierto para C++
- 30. ¿La velocidad de acceso a la base de datos MySQL está limitada principalmente por la base de datos o por el idioma utilizado para acceder a ella?
El bloque de acceso a datos empresariales está disponible en C#. Probablemente podrías haber creado algunos contenedores administrados de C++ si esa es una opción para ti. –