Pregunta

Tengo un amigo que se ejecuta una aplicación web para la gente el listado coches en venta. Hay unos pocos miles de clientes que lo utilizan, y cada cliente tiene cientos ya veces miles de filas en la base de datos (algunos han estado funcionando por 5 años con cientos de coches que venden cada mes, y 10s de filas por venta (comentarios, mensajes, etc)). Ha dirigido este sistema en una base de datos de SQL Server en un servidor físico con igual o 20GB de RAM y un par de procesadores para todo el tiempo, sin problemas. ¿Es esto una especie de milagro?

Al igual que la mayoría de los programadores, no soy un DBA y simplemente salir del paso, gracias a ORM, etc. Donde quiera que miro, la gente habla de la necesidad de tener fragmento o conseguir un servidor de base de datos para grandes usuarios de una aplicación web. ¿Por qué es esto? ¿Es realmente tan ineficiente tener una gran base de datos con una gran cantidad o filas? ¿Debo planear el uso de Cassandra o algo, o puedo confiar en la ampliación de bien con Postgres?

¿Fue útil?

Solución

Yo personalmente no creo que lo que has descrito es tan grande de una base de datos. El servidor (20 gigas de ram;?)) Suena decente. Es más sobre el uso y diseño. Si la base de datos está indexada y bien diseñado, puede crecer mucho, mucho más grande en el hardware actual.

Antes de realizar cualquier tipo de interruptor, me gustaría simplemente mirar el archivo de datos inútiles y optimizar consultas si hay un temor a los problemas de rendimiento.

Otros consejos

La razón de sharding y los servidores de base de datos separadas es que en algún momento se va a ser más barato usar varias máquinas más baratas de un costoso. precio del hardware no escala linealmente con un rendimiento y una vez que llega a un cierto punto que va a ser mucho más barato para conseguir el doble de máquinas como para conseguir una máquina que es el doble de rápido.

Se debe tener ningún problema en el servidor SQL, Oracle o cualquier base de datos relacional o no relacional moderna. He administrado bases de datos con 100 de millones de registros y terabytes de datos.

Por lo general se divide componentes arriba a través de diferentes servidores para que pueda administrar el tiempo, la resistencia y el rendimiento con mayor facilidad.

Es ciertamente muy posible tener una máquina monstruo, que lo hace todo, pero entonces es posible que tenga otra máquina monstruo en caso de que los troqueles de la placa base, o su centro de datos no está disponible.

Al dividir un sitio web o aplicación se crea, entre un servidor diferente es que es más fácil de conseguir máquinas más baratas, y más de ellos. De este modo se puede construir resistencia, y no tener componentes que tienen demandas similiar en choque de hardware.

También es importante pensar en los tiempos de los servidores, y los planes de recuperación de restauración.
¿Qué pasa cuando los troqueles de la máquina, se le sustituya en el tiempo acordado? Se puede restaurar las copias de seguridad en ese tiempo?

SQL Server o otras bases de datos de clase empresarial no debería tener ningún problema con 10 o 100 GB de bases de datos, siempre y cuando no haya sido diseñado demasiado mal. (Tenemos algunas máquinas con esa capacidad / uso que no están luchando en absoluto.).

En mi mente que no es nada. Tener decenas de millones de filas en varias tablas con el tamaño de la base de datos superior a 10 GB no ha causado problemas para MS SQL Server. Por supuesto que no es demasiado rápido, con tantos datos, pero por lo demás funciona bien.

Y para responder a la pregunta, demasiado grande es tan grande que causa problemas. Y cuando empieza causando problemas depende de la estructura de la tabla y sus demandas de rendimiento.

Las bases de datos son extremadamente eficientes en el almacenamiento y recuperación de datos relacional (es decir, datos que está estructurado y tiene referencias a otros datos) - que es lo que están diseñados para hacer. Honestamente, el 99% de las personas que arrojan sobre las tiendas de valores clave y Cassandra y otras cosas no tienen idea de lo que están haciendo. Un servidor de base de datos está muy bien para el almacenamiento de grandes volúmenes de datos, especialmente si usted está dispuesto a poner un poco de trabajo en sintonía correctamente.

Dicho esto, hay casos de uso de Cassandra et. Alabama. -. Si tiene datos clave sobre todo estructurado / valor o no es necesario consistencia o desea fragmentar para la redundancia, puede valer la pena investigar

A menos que usted es un sitio web muy popular, es probable que pueda llegar a funcionar muy bien con un servidor de base de datos decente - no cambiar hasta que se haya determinado ¿Por qué tiene que cambiar. Conmutación está bien, sólo asegúrese de que está cambiando, ya que sirve mejor a sus necesidades, y no porque es la "cosa fresca escala Web para hacer"

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