Pregunta

Vivimos en una época dorada de las bases de datos, con numerosas bases de datos comerciales y gratuitas de alta calidad.Esto es genial, pero la desventaja es que no existe una opción obvia y sencilla para alguien que necesita una base de datos para su próximo proyecto.

  • ¿Cuáles son las restricciones/criterios que utiliza para seleccionar una base de datos?
  • ¿Qué tan bien cumplen esas restricciones/criterios las diversas bases de datos que ha utilizado?
  • ¿Qué características especiales tienen las bases de datos?
  • ¿Qué bases de datos se siente cómodo recomendando a otros?

etc...

¿Fue útil?

Solución

Primero pensaría en cuáles son los requisitos del sistema para el acceso a los datos, la seguridad de los datos, la escalabilidad, el rendimiento, los escenarios desconectados, la transformación de los datos y el dimensionamiento de los datos.

Por otro lado, considere también la experiencia y los antecedentes de los desarrolladores, operadores y administradores de plataformas.

También debe pensar en las limitaciones que tiene con respecto a los lenguajes de programación, los sistemas operativos, el uso de memoria, el ancho de banda de la red y el hardware.

Por último, pero no menos importante, hay que pensar en cuestiones comerciales como el presupuesto para licencias, soporte y operación.

Después de todas esas consideraciones, debería terminar con sólo un par de opciones y la selección debería ser más fácil.

En otras palabras, seleccione la tecnología que mejor se adapte a las limitaciones y necesidades de su organización y proyecto.

Ciertamente creo que tiene razón al decir que no es una opción obvia dada la gran cantidad de alternativas, pero creo que esta es la única manera de limitarlas a aquellas que son realmente factibles para su proyecto.

Otros consejos

Mis criterios de selección (principalmente centrados en la programación):

  • Mantenimiento:¿Cómo se instalan las actualizaciones/revisiones?
  • Control de transacciones:Como se implementa
  • ¿Se admiten procedimientos almacenados?
  • ¿Se puede utilizar el manejo de excepciones en procedimientos almacenados?
  • Costos
  • Como beneficio:¿Se puede utilizar la recursividad en procedimientos almacenados?(P.ej.en SQL Server 2000 la recursividad se detiene después de 32 pases IIRC)

Para la mayoría de las personas en un entorno corporativo la elección se reduce a "lo que tenemos".

Dado que parece ser lo suficientemente afortunado como para poder elegir, repasaré rápidamente las preguntas y tal vez plantee algunas más al final.

El criterio más importante puede ser el costo.¿Quiere/está dispuesto a pagar por su plataforma DBMS?Si no, entonces Oracle, MS SQL Server, Sybase y otros probablemente estén fuera, aunque si no estás creando una aplicación comercial entonces puede haber cierto margen de maniobra.Además, plataforma: ¿puedes ejecutar el software en tu hardware?

Otras dimensiones a considerar podrían incluir el número esperado de conexiones simultáneas, lecturas transaccionales versus lecturas en su mayoría, tamaño, disponibilidad y supongo que muchas otras.

En general, se deben evitar las "características especiales"; en mi cínica visión del mundo, su objetivo es encerrarte en una plataforma.Entonces, algo como PL/SQL de Oracle es una característica que, si bien es poderosa (y probablemente signifique la necesidad de potencia adicional de CPU a un mayor costo de licencia), no es portátil.Si espera volúmenes extremadamente altos, supongo que la partición puede ser útil.

He trabajado con Oracle, MS SQL Server, MySQL, PostreSQL, SQLite y Sybase que se me ocurren.Con mucho gusto recomendaría todos menos Sybase, sobre el cual tengo algunas preocupaciones estos días (podría equivocarme fácilmente, pero personalmente creo que el dinero podría gastarse mejor en otra parte), pero no todos para las mismas aplicaciones.

Idealmente, me gusta tener la cálida sensación de que realmente no importa qué plataforma de base de datos esté usando porque puedo realizar la portabilidad fácilmente.Con una buena capa de abstracción entre los datos y la lógica empresarial, debería poder desarrollar localmente contra, digamos, el excelente SQLite e implementarlo sin problemas, por ejemplo, en Postgres.Con algo como ActiveRecord de Rails junto con un poco de conocimiento de cosas como las diferencias en las palabras reservadas, esto es casi completamente gratuito.

Seguramente el factor más convincente es su experiencia o la de su equipo... o el conjunto de recursos que probablemente contratará en el futuro.Yo tendería a seguir la corriente la mayor parte del tiempo, usando MySQL en un equipo LAMP y SQL Server en un equipo MS, ya que cualquiera de estos productos es capaz de hacer todo lo necesario incluso en un entorno de alta carga.

Los beneficios de cualquier otra base de datos serán marginales en comparación con el dolor de aprender a usarla bien.La única excepción a esto, en mi opinión, sería un entorno de alta demanda donde:

a.La opción obvia ha sido probada y está fallando.

b.Los beneficios de escalar multiplican el beneficio marginal hasta tal punto que valdrá la pena el costo de utilizar algo inesperado.

Asumiría la necesidad de contratar al menos dos y preferiblemente tres excelentes DBA con familiaridad a largo plazo con la nueva base de datos.

Y primero intentaría contratarlos para la tecnología que estaba fallando, porque es más probable que sea la forma en que se utiliza que la tecnología misma la que esté causando el problema.

Las respuestas existentes son geniales.Vale la pena tener en cuenta que Oracle ahora tiene una versión XE de su base de datos 10g que está disponible de forma gratuita y viene con Application Express, un excelente entorno de desarrollo basado en web.

Es limitado, 4 GB HD, 1 GB de Ram y usa solo una CPU.Sin embargo, esto es suficiente para ejecutar un sistema más pequeño y se puede actualizar fácilmente en una fecha posterior si es necesario.Oracle puede ser uno de los más difíciles de aprender, pero también uno de los mejores para tener en tu CV :-)

Creo que SQLServer de Microsoft también tiene una base de datos de tipo "inicial".No descarte los productos comerciales: si va a apostar su empresa por una tecnología de base de datos, preferiría utilizar un producto de Oracle o Microsoft personalmente.Eso no quiere decir que haya nada malo con el código abierto.

Dedica un rato a evaluarlos :-)

  • Linux, alojamiento web: MySQL (tal vez PostreSQL)
  • Pyme convencional - MS SQL
  • Big Iron (banca, etc.) - Oracle

Pensar en algo más que esos tres es masturbación: cualquiera de las otras bases de datos se convierte en una discusión sobre productos especializados para resolver problemas particulares que probablemente aún no haya encontrado.Si elige algo distinto de los tres anteriores, podrá:

  1. Luchar por encontrar personas que trabajen en el proyecto o mantener la base de datos en funcionamiento.
  2. Lucha por motivar tu decisión sin una discusión académica
  3. Alguien te maldecirá a ti, a tus antepasados ​​y a tu linaje dentro de unos años, y reemplazará tu elección de todos modos.

Las bases de datos de nicho no son el lugar donde se logran avances arquitectónicos: son tecnologías como middleware, mensajería, servicios en la nube, etc., donde usted puede permitirse (y debe) arriesgarse para encontrar buenos productos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top