¿Qué son exactamente los servidores y las bases de datos en términos de programación?

Un servidor, generalmente, es un programa que escucha las conexiones entrantes en un puerto en una interfaz de red (u otro socket *). Cuando llega una conexión, la procesa de acuerdo con lo que se supone que debe hacer el servidor. Por ejemplo, un servidor HTTP escuchará un puerto y cuando se envíe una solicitud HTTP válida, responderá con una respuesta HTTP válida. Rechazará las conexiones que no realicen solicitudes HTTP válidas.

Los servidores HTTP populares como apache o nginx generalmente escuchan las solicitudes HTTP y realizan alguna forma de redireccionamiento de las solicitudes a otros servicios. Puede ser un simple reenvío de la solicitud a un puerto o máquina diferente, o usar algo como CGI u otros complementos para crear una respuesta HTTP.

Una base de datos también es un programa. Su trabajo es manejar la gestión de datos. Hay muchos tipos de bases de datos, y todas tienen objetivos ligeramente diferentes. Algunos son servidores de bases de datos (PostgreSQL, MySQL, MongoDB, etc.), algunos están integrados (sqlite, Neo4j **), algunos son relacionales y usan SQL, algunos no y pueden ser bases de datos de documentos, gráficos o valores clave, algunos son solo en memoria, algunos son persistentes en el disco.

Una base de datos también puede ser un servidor. Escuchará conexiones de bases de datos de clientes de bases de datos, como MySQL, PostgreSQL o MongoDB.

* puede ser, por ejemplo, un socket de dominio unix.

** Neo4j se puede incrustar o ejecutar como servidor.

Lo dividiré en dos partes, lo hace más simple:

Bases de datos:

Las bases de datos son efectivamente abstracción de acceso a datos, solicita datos de una base de datos basada en un conjunto de comandos o un idioma, y ​​devuelve datos en una forma establecida. No tiene que preocuparse por cómo se almacenaron o procesaron los datos, solo sabe qué formato está recuperando. En términos de programación, proporcionan formas de buscar grandes cantidades de datos, generalmente almacenados en el disco duro, extremadamente rápido. Piense en algoritmos de búsqueda y clasificación rápidos, optimizados al límite absoluto. Muchos son capaces de manejar cientos de GB de datos, muchos más que la memoria RAM que poseen. Efectivamente, convierte un sistema de archivos que mantiene y optimiza e indexa, etc., en datos para que otras aplicaciones y servicios accedan, fácil y rápidamente.

¿Cómo se ve eso como un programa?

Cree un programa que cree un archivo y abra un socket web. Si alguien se conecta al zócalo y envía un “0”, luego una cadena, almacene esa cadena en el archivo. Si alguien envía un “1”, devuélvalo todo en el archivo. Acabas de escribir una base de datos básica. No es muy útil, pero creo que entiendes la idea. Las bases de datos más grandes son versiones más complejas de eso, implementando lenguajes de acceso mucho más complejos y sistemas de almacenamiento subyacentes mucho más complejos.

Servidores

Los servidores son (generalmente) computadoras dedicadas que ejecutan un programa que proporciona un servicio, a menudo a través de una red. A menudo implementan un cierto protocolo, por lo que otras computadoras pueden reconocer qué servicio brindan. En cuanto a la programación, esto es básicamente un socket abierto, esperando entrada, que luego analiza la entrada dada y devuelve la salida.

¿Cómo se ve eso como un programa?

El servidor más fácil que se me ocurre es este, crea un nuevo programa y abre un socket web. Si alguien envía un “0”, devuelve el mensaje del día (elige de una lista, lo codifica, lo que sea), de lo contrario, devuelve un error de algún tipo. Eso es un servidor, usted proporciona un servicio que es el mensaje del día. Los servidores más grandes solo proporcionan servicios más complejos (los servidores http pueden proporcionar múltiples páginas web, las bases de datos proporcionan datos, etc.).

Espero que haya ayudado un poco, diviértete :).