Espero que muchos de ustedes estén trabajando con sitios web basados en bases de datos de alto tráfico, y es probable que sus principales problemas de escalabilidad estén en la base de datos. Noté un par de cosas últimamente:
La mayoría de las bases de datos grandes requieren un equipo de DBA para escalar. Luchan constantemente con las limitaciones de los discos duros y terminan con soluciones muy caras (SAN o RAID grandes, ventanas de mantenimiento frecuentes para desfragmentar y volver a particionar, etc.) El costo anual real de mantener tales bases de datos está en el rango de $ 100K- $ 1M que es demasiado empinado para mí :)
Finalmente, tenemos varias compañías como Intel, Samsung, FusionIO, etc. que acaban de comenzar a vender discos duros SSD extremadamente rápidos pero asequibles basados en la tecnología SLC Flash. Estas unidades son 100 veces más rápidas en lectura / escritura aleatoria que los mejores discos duros giratorios del mercado (hasta 50,000 escrituras aleatorias por segundo). Su tiempo de búsqueda es prácticamente nulo, por lo que el costo de las E / S aleatorias es el mismo que la E / S secuencial, lo cual es increíble para las bases de datos. Estas unidades SSD cuestan alrededor de $ 10- $ 20 por gigabyte, y son relativamente pequeñas (64 GB).
Entonces, parece haber una oportunidad para evitar los ENORMES costos de escalar bases de datos de la manera tradicional simplemente construyendo una matriz RAID 5 lo suficientemente grande de unidades SSD (que costaría solo unos pocos miles de dólares). Entonces no nos importa si el archivo de la base de datos está fragmentado, y podemos permitirnos 100 veces más escrituras de disco por segundo sin tener que distribuir la base de datos en 100 ejes. .
¿Alguien más está interesado en esto? He estado probando algunas unidades SSD y puedo compartir mis resultados. Si alguien en este sitio ya ha resuelto su cuello de botella de E / S con SSD, ¡me encantaría escuchar sus historias de guerra!
PD. Sé que existen muchas soluciones costosas que ayudan con la escalabilidad, por ejemplo, las SAN basadas en RAM probadas con el tiempo. Quiero dejar en claro que incluso $ 50K es demasiado caro para mi proyecto. Tengo que encontrar una solución que no cueste más de $ 10K y que no tome mucho tiempo implementarla.
Dave, NXC y Burly,
Gracias por tus respuestas! Me gustaría aclarar que la palabra "barato" es muy importante en mi situación. Entonces, tengo que usar servidores Dell baratos ($ 4K 2950 que tienen solo 8 bancos de memoria). Ya tengo 32 GB de RAM instalados, así que no puedo seguir escalando de esta manera. Además, agregar RAM no lo salva de los cuellos de botella de ESCRITURA del disco, que es mi principal problema en este momento.
Solía preocuparme por la vida útil de los SSD, pero después de leer sobre los algoritmos modernos de nivelación de desgaste, estoy bastante seguro de que estas unidades durarán lo suficiente. Mi base de datos escribe 300GB por día, y se proyecta que supere los 1TB por día en 2009. Los SSD Enterprise están diseñados para manejar alrededor de 10TB de escrituras por día durante varios años.
No estoy de acuerdo con el punto de Burly de que se necesita demasiado trabajo para migrar de SAS a SSD. Mi base de datos es un espejo síncrono, así que puedo actualizar un lado del espejo, luego mirarlo durante unos meses, y si falla, puedo conmutar por error al segundo servidor que todavía tiene los viejos discos duros SAS buenos ...
fuente
Respuestas:
Problemas potenciales
Tengo un par de problemas con el uso de SSD para bases de datos de producción en este momento.
Beneficios Propuestos
Dicho esto, hay una serie de elementos, al menos en papel, a favor de los SSD en el futuro:
Entonces, para un punto de referencia de rendimiento dado, cuando se tiene en cuenta el costo total de propiedad, incluidos los costos directos de energía y de enfriamiento indirecto, los SSD pueden ser muy atractivos. Además, dependiendo de los detalles de su entorno, la reducción en la cantidad de dispositivos requeridos para un determinado nivel de rendimiento también podría resultar en una reducción de los requisitos de personal, reduciendo los costos de mano de obra.
Costo y rendimiento
Agregó que tiene una restricción de costos por debajo de $ 50K USD y realmente desea mantenerla por debajo de $ 10K. También ha declarado en un comentario que puede obtener algunos SSD "baratos", eludiendo que los SSD serán más baratos que los DBA o consultores. Esto puede ser cierto según la cantidad de horas que necesitaría un DBA y si es un costo recurrente o no. No puedo hacer el análisis de costos por usted.
Sin embargo, una cosa que debes tener mucho cuidado es el tipo de SSD que obtienes. No todos los SSD se crean de la misma manera. En general, las unidades SSD "baratas" que ve a la venta en los $ 200-400 dólares (2008/11/20) están destinadas a entornos de baja potencia / calor, como las computadoras portátiles. Estas unidades tienen niveles de rendimiento más bajos en comparación con un disco duro de 10K o 15K RPM, especialmente para escrituras. Las unidades de nivel empresarial que tienen el rendimiento impresionante del que habla, como la serie Mtron Pro, son bastante caras. Actualmente están alrededor:
Dependiendo de su espacio, rendimiento y requisitos de redundancia, podría soplar fácilmente su presupuesto.
Por ejemplo, si sus requisitos requerían un total de 128 GB de almacenamiento disponible, RAID 0 + 1/10 o RAID 5 con 1 hotspare serían ~ $ 5600
Sin embargo, si necesita una TB de almacenamiento disponible, RAID 0 + 1/10 sería de ~ $ 51K y RAID 5 con 2 hotspares sería de ~ $ 32K.
Cuadro grande
Dicho esto, la instalación, configuración y mantenimiento de una gran base de datos de producción requiere un individuo altamente calificado. Los datos dentro de la base de datos y los servicios proporcionados a partir de esos datos son de un valor extremadamente alto para las empresas con este nivel de requisitos de rendimiento. Además, hay muchas cosas que simplemente no se pueden resolver lanzando hardware al problema. Un DBMS configurado incorrectamente, un esquema de base de datos o una estrategia de indexación deficientes pueden / arruinar / el rendimiento de un DB. Solo mire los problemas que Stackoverflow experimentó en su migración a SQL Server 2008 aquí y aquí. El hecho es que una base de datos es una aplicación extenuante no solo en el disco sino también en la RAM y la CPU. Equilibrar el problema de rendimiento de múltiples variantes junto con la integridad de los datos, la seguridad, la redundancia y la copia de seguridad es un poco complicado.
En resumen, aunque creo que cualquier mejora en la tecnología de hardware y software es bien recibida por la comunidad, la administración de bases de datos a gran escala, como el desarrollo de software, es un problema difícil y continuará requiriendo trabajadores calificados. Una mejora dada puede no cosechar los costos de reducción de mano de obra que usted o una empresa podrían esperar.
Un buen punto de partida para algunas investigaciones podría ser el sitio web / blog de Brent Ozar aquí . Es posible que reconozca su nombre: es él quien ha ayudado al equipo de stackoverflow con sus problemas de rendimiento de MS SQL Server 2008. Su blog y recursos que vincula ofrecen bastante amplitud y profundidad.
Actualizar
Los mismos Stackoverflow van por la ruta del consumidor basada en SSD para su almacenamiento. Lea sobre esto aquí: http://blog.serverfault.com/post/our-storage-decision/
Referencias
fuente
Si tiene un sitio de mucho, mucho tráfico que puede beneficiarse de un SSD para un mayor rendimiento de escritura, probablemente tendrá un problema con la vida útil del SSD, por lo que todavía no estoy vendido en ellos por eso.
Con eso en mente, ¿qué hacer con las bases de datos que tienen altos niveles de lecturas? La respuesta es simple: atasca el servidor con tanta RAM como puedas soportar. Descubrirá que las tablas más populares casi siempre se mantienen en la memoria caché de RAM de todos modos, y cualquier gran impacto en el disco probablemente se deba a una gran tabla o exploración de índice, que a menudo se puede optimizar con una indexación adecuada.
fuente
He trabajado como DBA durante más de 5 años y pensar en formas de mejorar el rendimiento de la base de datos siempre está detrás de mi mina. He estado observando el espacio SSD y creo que definitivamente se están convirtiendo en una opción cada vez más viable.
Mira esto;
http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds
También hay un nuevo producto producido por Acard llamado ANS-9010, que es una versión mejorada del GC-Ramdisc que le permite usar ram DDR2 para crear una unidad SATA (hasta 64 gig) usando palos DDR2 con un teórico de 400 MB / s máximo.
http://techreport.com/articles.x/16255/3
^^ Pero la otra cosa que es útil en ese artículo es que compara el ANS-9010 con todos los jugadores en el mercado de SSD y resulta que Intel tiene un SSD x25-E de 64GB que es bastante comparable a tener un disco de hardware.
Lo que me preocuparía de la SSD es desgastarlos con todo el estrés por el que una DB grande los atravesaría, por lo que tendrías que usar raid para duplicar las unidades, lo que significa que estás pagando el doble;
Y la desventaja del disco de hardware es que la batería, en el caso de un corte de energía, solo la alimenta durante tanto tiempo, por lo que tendrá que encontrar una forma elegante de respaldarla. Creo que también puede comprar un enchufe de red para ellos, pero eso todavía depende de su UPS.
Le sugiero que use el disco RAM de hardware para la base de datos temporal y el archivo de intercambio de Windows, y coloque la base de datos en el Intel X25-E Extreme (aproximadamente 600 USD por 64 presentaciones).
De todos modos, gritaría y nos pondría muy celosos a todos los demás.
(También considere usar otro ANS-9010 para alojar el sitio web)
Saludos, Dave
fuente
Acabamos de armar un servidor w2k3 r2 64bit Sql 2008 en doble espejo híbrido Seagate Momentus XT de 2.5 pulgadas: 1/4 de carrera para el sistema operativo y 1/4 de carrera para la base de datos. Entonces usamos 125GB para OS y 125GB para DB. estaban obteniendo lecturas de 1500MB / s a 1900MB / s seq. En un Intel i7 2600K 3.4Ghz 8GB
fuente
Hay productos en el mercado como este que hacen este tipo de cosas. Además, como dice el otro póster, agregar RAM adicional al servidor DB le dará mejores tasas de aciertos de caché, lo que reducirá el tráfico del disco.
Los servidores Opteron de 8 sockets, como el Sun X4600, le permitirán colocar hasta 256 GB de RAM en ellos a precios aún más baratos que un gran equipo de DBA. También podría considerar el uso de archivos planos en lugar de un DBMS (como lo hizo esta compañía ), lo que le brindará un mejor rendimiento que un DBMS. En este caso, una SAN le dará un grado de integridad de datos. Sin embargo, tendrá que diseñar su estrategia de acceso a datos con cuidado para evitar meterse en un lío. Al parecer, bastantes conjuntos de punto-com de gran volumen hacen esto. Es considerablemente más eficiente que un DBMS, lo que permite que un hardware bastante peatonal maneje cargas grandes y evita las tarifas de licencia de DBMS.
fuente
Las unidades SSD se basan en la memoria flash NAND (MLC o SLC). Si está comprando unidades SSD en un formato SATA (2 o 3), está limitando el rendimiento que puede obtener de ellas. Por lo general, las unidades SSD basadas en el controlador Sandforce SF-1200 rápido producen lecturas de 220 MB / segundo y escrituras de 205 MB / segundo, mucho más rápido que un disco giratorio mecánico anticuado.
Sin embargo, si cambia a una solución PCIe como FusioIO, que no tiene el conector lento SATA 2 o SATA 3 involucrado, está buscando soluciones que son 10-50 veces más rápidas que los toros mecánicos giratorios (me refiero a los discos).
Entonces, para su solución "barata", elija un SDD SATA 2/3 basado en el controlador Sandforce SF-1200. Esto le proporcionará una mejora de velocidad de 3-5 veces (basada en la experiencia del mundo real). Si tienes el presupuesto, entonces ve por el FusioIO. Nada lo superará en términos de rendimiento. Es increíblemente rápido. Sin embargo, espere gastar entre $ 20,000 y $ 50,000.
fuente