Qué estrategia de base de datos elegir para una gran aplicación web

Tengo que reescribir una aplicación de base de datos grande, que se ejecuta en 32 servidores. El hardware está actualizado, cada máquina tiene dos Xeon de cuatro núcleos y 32 GByte de RAM.

La base de datos es multiusuario, cada cliente tiene su propio archivo, alrededor de 5 a 10 GByte cada uno. Ejecuto alrededor de 50 bases de datos en este hardware. La aplicación está abierta a la web, por lo que no tengo control sobre la carga. No hay consultas realmente complejas, por lo que no se requiere SQL si hay una solución mejor.

Las bases de datos se actualizan a través de FTP todos los días a la medianoche. La base de datos es de solo lectura. C# es mi lenguaje favorito y quiero usar ASP.NET MVC.

Pensé en las siguientes opciones:

  • Utilice dos grandes servidores SQL que ejecuten SQL Server 2012 para proporcionar datos a los 32 servidores. En los 32 servidores que ejecutan alojamiento IIS que brindan servicios REST.

  • Desnormalice la base de datos y use Redis en cada servidor web. Use booksleeve como cliente de Redis.

  • Use una combinación de SQL Server y Redis

  • Use SQL Server 2012 junto con Hadoop

  • Usar Hadoop sin SQL Server

¿Cuál es la mejor manera para que una base de datos de solo lectura obtenga el mejor rendimiento sin perder capacidad de mantenimiento? ¿Map-Reduce tiene algún sentido en tal escenario?

El motivo de la reescritura es que la aplicación antigua escrita en C++ con tecnología ISAM es demasiado lenta, las interfaces son anticuadas y no son agradables de usar desde un sitio web, especialmente cuando se usa ajax.

La aplicación utiliza un modelo de datos relacional con muchas tablas, pero es posible escribir una tabla aceleradora en la que se pueden realizar todas las consultas, y toda la información restante de las otras tablas es posible mediante una simple búsqueda de claves.

preguntado el 30 de junio de 12 a las 21:06

Realmente no nos ha dicho nada útil sobre la arquitectura actual, los patrones de uso actuales, los cuellos de botella actuales... o por qué esta "aplicación de base de datos grande" necesita ser reescrita en primer lugar. Así que permítanme hacer una pregunta: ¿hay algo que los usuarios estén guardando o usando actualmente que no se pueda hacer con Hadoop tan fácilmente como con SQL Server? ¿Sin tablas, sin relaciones, sin consultas SQL? -

Lo siento, traté de mantener esta pregunta lo más genérica posible :-) -

2 Respuestas

Pocas preguntas. ¿Qué problemas han surgido para que estés reescribiendo esto? ¿Cómo son los patrones de consulta? Parece que se sentiría más cómodo con un almacenamiento en caché de SQLServer + (memcached) para abordar cualquier problema que le haga reescribir esto. Redis es bueno, pero no necesitará las funciones de estructura de datos con las consultas de manejo de db, y no necesita persistencia si solo se usa como caché. Sin saber más sobre el problema, supongo que miraría a MongoDB para manejar la fragmentación de datos, el almacenamiento redundante y el almacenamiento en caché, todo en una sola solución. No hay máquinas especiales en esta configuración, se puede configurar la redundancia y la carga debe equilibrarse bien.

Respondido el 30 de junio de 12 a las 22:06

Esta pregunta es casi un artículo de opinión. Personalmente, preferiría un Oracle RAC con TimesTen para el almacenamiento en caché si el rendimiento es de suma importancia y si el volumen de lecturas simultáneas es alto durante el día.

Aquí hay un libro blanco...

http://www.oracle.com/us/products/middleware/timesten-in-memory-db-504865.pdf

Sin embargo, las especificaciones del subsistema del disco y la organización de índices y archivos de datos en los discos físicos son probablemente el factor más importante.

Respondido 01 Jul 12, 00:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.