Pregunta

¿Existe una regla general a seguir al almacenar datos de aplicaciones web para saber qué backend de base de datos se debe utilizar?¿Es la cantidad de visitas por día, la cantidad de filas de datos u otras métricas que debo considerar al elegir?

Mi idea inicial es que el orden para esto sería similar al siguiente (pero no necesariamente, por eso hago la pregunta).

  1. Archivos planos
  2. BDB
  3. SQLite
  4. mysql
  5. PostgreSQL
  6. servidor SQL
  7. Oráculo
¿Fue útil?

Solución

No es tan fácil.La única regla general es que debes buscar otra solución cuando la actual ya no pueda seguir el ritmo.Eso podría incluir el uso de software, hardware o arquitectura diferentes (no necesariamente en un orden fijo global).

Probablemente obtendrá muchos más beneficios al almacenar datos en caché usando algo como memcached que cambiar a otro backend de almacenamiento aleatorio.

Otros consejos

Si cree que alguna vez necesitará uno de los pesos pesados ​​(SqlServer, Oracle), debe comenzar con uno de ellos desde el principio.Las migraciones de datos son extremadamente difíciles.A la larga, le costará menos empezar desde arriba y permanecer allí.

Creo que estás siendo demasiado específico en tus clasificaciones.Puedes comenzar con archivos planos y similares para conjuntos de datos muy pequeños, pasar a algo como DBM para archivos un poco más grandes que no requieren una sintaxis similar a SQL, y luego ir a algún tipo de base de datos SQL.

¿Pero quién quiere hacer toda esa reescritura?Si la aplicación se beneficiará del acceso a uniones, procedimientos almacenados, activadores, validación de claves externas y similares, simplemente use una base de datos SQL independientemente del tamaño del conjunto de datos.

Cuál debería depender más de las instalaciones existentes del cliente y de las habilidades de DBA disponibles que de la cantidad de datos que tiene.

En otras palabras, el tamaño de su base de datos está lejos de ser la única consideración, y tal vez no sea la más importante.

No hay una respuesta general a esto, pero CASI siempre, usar archivos planos no es una buena idea.Tienes que analizarlos (supongo) y no escalan bien.Comenzar con una base de datos adecuada, como Oracle o SQL Server (o MySQL, Postgres si buscas opciones gratuitas) es una buena idea.Por muy pocos gastos generales, se ahorrará mucho esfuerzo y dolores de cabeza más adelante.También le permiten estructurar sus datos de una manera no estúpida, dejándolo libre de pensar en QUÉ hará con los datos en lugar de CÓMO los ingresará o sacará.

Realmente depende de tus datos y de cómo piensas utilizarlos.En uno de mis puestos anteriores, usamos Postgres debido a las extensiones nativas de ubicación geográfica y zona horaria que existían porque nos permitían administrar nuestros datos utilizando tipos de datos poligonales.Para nosotros, necesitábamos hacer eso y también queríamos utilizar procedimientos almacenados, vistas y similares.

Ahora, otro lugar en el que trabajé usaba MySQL simplemente porque los datos estaban normalizados, datos estándar fila por fila.

SQL Server, durante mucho tiempo, tuvo un límite de base de datos de 4 GB (consulte SQL Server 2000), pero a pesar de esa limitación sigue siendo una plataforma muy estable para aplicaciones pequeñas y medianas para las cuales se eliminan los datos antiguos.

Ahora, después de trabajar con Oracle y SQL Server 05/08, todo lo que puedo decirle es que si desea lo mejor en estabilidad, escalabilidad y flexibilidad, entonces estos dos son su mejor opción.Para aplicaciones empresariales, las recomiendo encarecidamente (simplemente porque eso es lo que usamos donde trabajo ahora).

Otras cosas a considerar:

  • Integración de idiomas (almacenamiento de sesiones ASP.NET, gestión de roles, etc.)
  • Tipos de consulta (Seleccionar, Actualizar, Eliminar) [Aunque esto es más una cuestión de diseño de esquema, no una cuestión de DBMS)
  • Requisitos de almacenamiento de datos

La utilización de la base de datos por parte de su aplicación es la más crítica.Principalmente, ¿qué consultas se utilizan con más frecuencia (SELECCIONAR, INSERTAR o ACTUALIZAR)?

Digamos que si usa SQLite, es ideal para aplicaciones más pequeñas, pero para aplicaciones "web" puede usar una más grande como MySQL o SQL Server.

La forma en que escribe scripts y sus plataformas de aplicaciones web también son importantes.Si está desarrollando en una plataforma Microsoft, SQL Server es una mejor alternativa.

Por lo general, sigo lo que es comúnmente aceptado por cualquier marco que esté usando.Entonces, si estoy haciendo .NET => SQL Server, Python (a través de Django o Pylons) => MySQL o SQLite.

Aunque casi nunca uso archivos planos.

Elegir una solución RDBMS implica más que simplemente "potencia de fondo".La capacidad de tener control de compromiso, por ejemplo, para poder revertir una transacción fallida es una de ellas.razón.

A menos que esté en la aplicación de tasas de megatransacción, la mayoría de los motores de bases de datos serían adecuados, por lo que se convierte en una cuestión de cuánto desea pagar por el software, si se ejecuta en el entorno de hardware y sistema operativo que desea y qué experiencia tiene. en la gestión de ese software.

Esa progresión suena dolorosa.Si va a incluir productos de MS (especialmente el SQL Server de pago) en cualquier lugar, también puede usar toda la pila, ya que solo tiene que pagar por el último de estos:

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

Si inicialmente dirige su aplicación a SQL Server Compact, se garantiza que todo su código SQL escalará a la siguiente versión sin modificaciones.Si crece más que SQL Server Enterprise, entonces felicidades.Eso es lo que llaman un bien problema que tener.

También:regrese y consulte los podcasts de SO.Creo que hablaron de esto brevemente.

Esta pregunta realmente depende de tu situación.

Si tiene control sobre el servidor en el que está implementando y puede instalar cualquier servicio que necesite, entonces no vale la pena el tiempo para instalar un servidor MySql o MSSQL Express y codificar en un marco de base de datos existente VERSUS codificar en una estructura de archivos planos. de considerar.

¿Qué pasa con FireBird?¿Dónde encajaría eso en esa lista?

Y no olvidemos los requisitos que el "cliente" de su solución también debe tener.Si está escribiendo una aplicación comercial para pequeñas empresas, es posible que Oracle no sea una buena opción...pero si está escribiendo una solución personalizada para una gran empresa que debe compartir datos entre varios campus y tiene un departamento de TI de buen tamaño, entonces la decisión entre Oracle y Sql Server se reduciría a lo que el cliente probablemente ya haya implementado.

La migración de datos hoy en día no es tan mala ya que contamos con esas excelentes herramientas de Embarcadero, por lo que dejaría que las necesidades del cliente impulsen la decisión.

Si tiene la opción, SQL Server es una buena opción desde el principio, principalmente porque tiene acceso a procedimientos y funciones sólidos y las funciones de copia de seguridad de la base de datos son totalmente confiables.Resumir toda la lógica que pueda dentro de la propia base de datos (en lugar de en cualquier idioma que esté usando) ayuda a la seguridad y el rendimiento; de hecho, hay un buen argumento para usar siempre procedimientos para la lógica de inserción/actualización, ya que estos le hacen invulnerable a los ataques de inyección.

Si tengo la opción, el único momento en el que preferiría MySQL es con una base de datos grande, bastante simple, utilizada predominantemente para acceso de lectura.Esto no es para desacreditar a MySQL, que ha mejorado notablemente últimamente y lo uso felizmente si no tengo la opción, pero para sistemas más complejos con actividad de actualización/inserción, MSSQL es generalmente la opción superior.

Creo que tu lista es subjetiva pero seguiré tu juego.

Archivos planos

BDB

SQLite

mysql

PostgreSQL

servidor SQL

Oráculo

teradata

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