2010-10-20 13 views
10

Me gustaría estudiar más sobre el tema de los patrones completos de diseño de datos. Específicamente, las diferentes mezclas de tecnologías para almacenar, procesar, almacenar en caché y recuperar datos. En otras palabras, observe cuántos componentes se usan en sistemas grandes como facebook.Patrones de diseño de datos/bases de datos?

Que yo sepa, tenemos RBMS y NoSQL sabores de categorías de bases de datos. Sin embargo, muchas más tecnologías (fuera del almacenamiento permanente de datos) son críticamente en el uso de los datos en el mundo real, como memcached. Sin embargo, no puedo encontrar mucho en los patrones de diseño generales que deberían usarse para aprovechar al máximo todas las arquitecturas.

¿Alguien tiene enlaces a artículos sobre paquete completo patrones de diseño que se pueden lograr con diferentes mezclas de componentes del sistema de base de datos?

Esto no es una pregunta para las mejores prácticas DB específicas como database normalization. Tampoco es una pregunta sobre la mejor manera de usar un certain technology.

¿Qué patrones de diseño se pueden utilizar para mezclar tecnologías extrañas correctamente para aprovechar las fortalezas de cada uno para diseñar sistemas completos y eficientes? Desde el almacenamiento en caché, a CRUD, a la escala, a la integridad de los datos.

Por ejemplo, en pequeños hosts compartidos, puedo ejecutar cosas como blogs de SQLite ya que son casi todas lecturas y no escrituras. Por otro lado, algunos proyectos están en VPS de gama baja y puedo usar la memoria caché de MySQL + APC (es solo un servidor después de todo) para obtener un rendimiento increíble en lectura/escritura alta. ¡Con más de un VPS memcached es champ!

También soy un fan de MongoDB y PostgreSQL. Sin embargo, MongoDB no utiliza ninguna forma de limitaciones de RAM, por lo que realmente debería tener un servidor por separado. Sin embargo, almacenar objetos grandes en MongoDB y dejar el resto de los datos importantes en PostgreSQL es un ganar-ganar.

Sin embargo, estas son todas opciones de diseño muy básicas. Las aplicaciones a gran escala están diseñadas con mucha más abstracción para promover el escalamiento y reducir los puntos de falla.

Respuesta

1

Mi sugerencia sería leer acerca de databases en general, con el fin de comprender los diferentes tipos de storage structures que se han utilizado.

Una vez que tenga estos antecedentes, será más fácil hacer coincidir la tecnología actual (NoSQL) con la estructura de almacenamiento (sin esquema, escalable horizontalmente).

+0

Sí, una comprensión básica de los objetivos del software (¡hay tantos!) Es muy importante para que no intente obligarlo a realizar una tarea incorrecta. ¡Esto es muy peligroso si el proyecto cambia de dirección y deja de funcionar de la manera en que comenzó a usarlo! – Xeoncross

+0

jeje, tu ganas. ;) – Xeoncross

+0

Gracias. Muchas gracias. –