¿Cómo se implementa una base de datos en un sitio web? ¿Dónde estará la base de datos en un servidor o no?

Los sitios web grandes tendrían máquinas de servidores de bases de datos dedicadas que son independientes de las máquinas de servidores de aplicaciones. También tendrán redes locales de alta velocidad entre estas máquinas o grupos de máquinas.

Tener aplicaciones e instancias del servidor de bases de datos en máquinas separadas resuelve varios problemas:

  • Como las aplicaciones y las bases de datos se comportan de manera diferente, normalmente desea que las máquinas del servidor de bases de datos tengan una configuración de hardware diferente de la mayoría de las máquinas de aplicaciones. Las máquinas de servidor de base de datos necesitan toneladas de RAM y E / S sofisticadas, mientras que las máquinas de aplicaciones generalmente pueden salirse con la E / S básica (especialmente si el registro es manejado por una base de datos como MongoDB o Elasticsearch), y solo CPU rápida y mucha RAM.
  • Tener un montón de máquinas que realizan trabajos dedicados le permite tener flexibilidad para cosas como mantenimiento y actualización.
  • También se requieren varias máquinas para tener estrategias de conmutación por error limpias tanto para la aplicación como para las máquinas db. Su mundo de DB tendrá esclavos de replicación de base de datos y estos deben estar en máquinas separadas de sus máquinas de DB “maestras” (y los servidores esclavos deben ser aprovisionados de manera idéntica a sus maestros activos para que puedan ser maestros si lo necesitan).
  • Tener diferentes máquinas ofrece un nivel adicional de seguridad. Las máquinas de la aplicación deberán estar visibles desde el exterior de Internet, pero las máquinas de la base de datos, que generalmente es donde viven sus datos más seguros, solo deben ser visibles para las máquinas de la aplicación, por lo que alguien que quiera piratear su mundo de datos necesitaría ejecutar dos niveles de piratería para acceder a la base de datos.
  • También puede “equilibrar la carga” de sus máquinas de aplicaciones si están separadas de las máquinas de db. Los equilibradores de carga se pueden usar tanto para el equilibrio de carga real como para manejar varios tipos de conmutación por error.

La base de datos se puede almacenar en el mismo servidor que el resto del sitio web, pero también se puede almacenar en un servidor diferente o incluso se puede almacenar en varios servidores (base de datos distribuida).

También se puede almacenar de 2 formas en un servidor.

Una forma es almacenar la base de datos en un solo archivo. De esta manera es utilizado por el motor SQLite. Es muy portátil, por lo que las bases de datos SQLite a menudo son utilizadas no solo por sitios web sino también por programas “normales”, como Firefox. Firefox utiliza el archivo “places.sqlite” para almacenar las anotaciones, marcadores, iconos favoritos, historial de entrada, palabras clave e historial de navegación.

La segunda forma, más popular y utilizada por MySQL y otros motores, es guardar las bases de datos como archivos pero también ejecutar un servicio (o un demonio) en su memoria RAM y almacenar en caché algunos de estos datos. Dichas bases de datos suelen ser más rápidas, pero son menos portátiles, utilizan más RAM, CPU y espacio en disco.

Sí, la base de datos puede o no residir en el mismo servidor que el sitio web que se ejecuta en algún servidor web como Iis o apache. Mantener la base de datos en el mismo servidor le brinda un poco más de velocidad porque habrá menos sobrecarga de red, ya que el código del sitio web y la base de datos residirán en la misma máquina.

La base de datos vive en un servidor (o generalmente, un grupo de servidores) en el back-end. Solo debe ser accesible para los servicios que leen y escriben.