2010-03-13 24 views
19

La aplicación de destino es un sitio web de tamaño mediano creado para admitir varios cientos a varios miles de usuarios por hora, con la opción de escalar por encima de eso. El modelo de datos es bastante simple, y el potencial de almacenamiento en caché es bastante alto (relación ~ 10: 1 de acciones de lectura a edición).¿Cuáles deberían ser las consideraciones para elegir SQL/NoSQL?

¿Cuáles deberían ser las consideraciones al elegir entre un almacén de datos relacional basado en SQL y una opción NoSQL (como HBase y Cassandra)?

+0

¿Quiere decir 100 a 1k o 100k usuarios por hora? – Bobby

+0

Despejó la ambigüedad :) –

+0

Por favor, haga al menos una _little_ investigación primero (tal vez dos minutos vale la pena). Solo eche un vistazo rápido a través de http://stackoverflow.com/questions/tagged/nosql. –

Respuesta

18

Para mí, no tiene ningún problema en particular para resolver. Si necesita ACIDity, use una base de datos; si no lo haces, entonces no importa. Al final solo crea tu aplicación. Y permítanme citar NoSQL: If Only It Was That Easy:

Lo real a señalar es que si usted está siendo abstuvo de hacer algo muy impresionante porque no se puede elegir una base de datos, lo estás haciendo mal. Si conoce mysql, simplemente lo usó. Optimizar cuando realmente lo necesite. Úselo como una tienda k/v, úselo como un rdbms, ¡pero por el amor de Dios, construya su aplicación asesina! Nada de esto importará en la mayoría de las aplicaciones. Facebook todavía usa MySQL, mucho. Wikipedia usa MySQL, mucho. FriendFeed usa MySQL, mucho. NoSQL es una gran herramienta, pero ciertamente no va a ser su ventaja competitiva, no va a hacer que su aplicación se caliente, y sobre todo, a sus usuarios no les importará nada de esto.

+0

'a tus usuarios no les importará una mierda nada de esto' <- me gusta esta parte, tan cierto. LOL – GusDeCooL

1

Digg have some interestingarticles en esta pregunta. Básicamente, está transfiriendo la carga del procesamiento a escrituras en lugar de a lecturas, lo que puede ser deseable en aplicaciones altamente escalables. Cassandra específicamente también está altamente disponible.

manera simplista, Cassandra es una base de datos distribuida con un modelo de datos BigTable se ejecuta en un Dynamo como infraestructura. Está orientado a columnas y permite el almacenamiento de datos relativamente estructurados. Tiene un modelo totalmente descentralizado ; cada nodo es idéntico y no existe un solo punto de falla . También es extremadamente tolerante a fallas; los datos se replican en nodos múltiples y en los centros de datos . Cassandra también es muy elástica ; el rendimiento de lectura y escritura aumenta linealmente a medida que se agregan máquinas nuevas .

0

Cuando dices, el modelado de datos es bastante simple, esto podría hablar de la opción NoSQL.

Cuando tiene muchos atributos para realizar selecciones, cargas de transacciones pesadas o estructuras de tablas complicadas, que hablarían en las tablas SQL tradicionales.

Recomendaría averiguar qué tan difícil sería implementar el modell de datos con una o dos bases de datos NoSQL. Cuando esto es bastante difícil, también puedes hacer un esquema de tabla clásico para comparar.

Cuando tiene dificultades con NoSQL, esto podría significar la opción de SQL. Pero también podría ser que la carga pesada se maneje mejor con NoSQL, pero también podría ser que una buena base de datos SQL se escale lo suficiente ...

El almacenamiento en búfer también se puede hacer con un servidor Proxy simple ...

En las dificultades, una mezcla de NoSQL y SQL también podría ser considerada.

Cuestiones relacionadas