2011-06-06 24 views
25

Así que tengo un sitio web que eventualmente podría obtener bastante tráfico. Mi implementación de DB está en SQL Server 2008 en este momento. Realmente solo tengo 2 tablas y algunos procs almacenados. La mayor parte de la base de datos podría rediseñarse para funcionar sin unir (aunque no tendría sentido cuando puedo unirme fácilmente a SQL Server).SQL Server contra NoSQL

Escuché que sitios como Digg y Facebook usan bases de datos NoSQL para una gran parte de su acceso a datos básicos. ¿Es esto algo que vale la pena investigar, o SQL Server realmente no me ralentizará tanto?

Uso la búsqueda en mi sitio (aunque esto podría cambiar en el futuro), y también uso el acceso a datos AJAX para la mayoría de las cosas "en vivo", así que realmente no parece ser un obstáculo de rendimiento por el momento, pero me temo que será cuando los datos comiencen a expandirse exponencialmente.

¿Voy a obtener un gran rendimiento si me cambio a NoSQL? Honestamente, ahora mismo no entiendo completamente NoSQL, entonces cualquier consejo sobre cómo esto me ayudará a mejorar.

Gracias chicos.

+0

Posible duplicado: http://stackoverflow.com/questions/1145726/what-is-nosql-how-does-it-work-and-what-benefits-does-it-provide – RThomas

+0

Posible duplicado de [Qué es NoSQL, ¿cómo funciona y qué beneficios proporciona?] (Http://stackoverflow.com/questions/1145726/what-is-nosql-how-does-it-work-and-what-benefits-does- it-provide) –

Respuesta

42

En realidad Facebook utilizan una base de datos relacional en su núcleo, ver SOCC Keynote Address: Building Facebook: Performance at Massive Scale. Y también lo hacen muchos otros sitios de escala web, consulte Why does Quora use MySQL as the data store instead of NoSQLs such as Cassandra, MongoDB, CouchDB etc?. También hay una discusión sobre cómo escalar el Servidor SQL al tamaño de la escala web, vea How do large-scale sites and applications remain SQL-based? que se basa en la arquitectura de MySpace (más detalles en Scale out SQL Server by using Reliable Messaging). No digo que NoSQL no tenga sus casos de uso, solo quiero señalar que hay muchos tonos de gris entre blanco y negro.

Si tiene miedo de que su solución actual no se escale, quizás debería considerar cuáles son los factores que impiden la escalabilidad con su solución actual.Los datos de prueba son baratos de producir, cargan el volumen de datos 'exponencialmente aumentado' y ejecutan su arnés de prueba, para ver dónde se agrieta. Ninguna de las soluciones NoSQL brindará la escalabilidad comercial estándar, todas requieren que usted entienda cómo usarlas de manera efectiva y desplegarlas correctamente. Y también requieren que pruebe con grandes volúmenes si desea garantizar el éxito a escala. Lo mismo para las soluciones relacionales tradicionales.

+1

Sí, sí, un millón de veces sí. – HLGEM

+0

Otro estudio de caso de SQL interesante (newrelic usando mysql para almacenar 200 mil millones de puntos de datos al día en el disco) - http://www.slideshare.net/jthurman42/getting-100b-metrics-to-disk – Anoop

7

El servidor Sql escala bastante bien. Por ejemplo, Stack Overflow lo usó para servirle en esta misma página. Facebook y Google pueden usar una forma de nosql, pero incluso si lo haces realmente grande es poco probable que subas a ese nivel.

7

Con una estructura de tabla sencilla y datos que se ajustan a un servidor, no importa mucho la plataforma que utilice. Hay varias razones posibles para que pasar a NoSQL:

  • escalamiento de datos - SQL funciona mejor cuando todos los datos caben en un servidor (hasta unos pocos TB). La razón por la que muchas tiendas NoSQL no se han unido es porque fueron diseñadas para no requerir que todos los objetos estén en un servidor.

  • Escala de rendimiento: las tiendas NoSQL tienden a ser más rápidas en el manejo de tráfico elevado, pero no necesariamente lo suficiente como para importar. Puede mejorar bastante el rendimiento de SQL con la replicación y el almacenamiento en caché, siempre y cuando no se encuentre con problemas de tamaño de datos. En general, las escrituras tienen que ejecutarse en un servidor, pero en la mayoría de los casos tendrá que mejorar el rendimiento de lectura mucho antes de que el rendimiento de escritura se convierta en un problema.

  • Acceso complejo a los datos: algunos tipos de consultas simplemente no encajan bien en un modelo relacional. Las tiendas de gráficos y conjuntos funcionan de forma bastante diferente de las bases de datos relacionales, por lo que se ajustan mejor a algunas aplicaciones.

  • Desarrollo más sencillo: si aún no tiene una base de datos SQL y todo el código para admitirla, el uso de un almacén de datos sin esquema puede ahorrar bastante tiempo de desarrollo.

+0

Puede beneficiarse mucho de un NoSQL también en un escenario de datos pequeños de un servidor. Normalmente, debido a la naturaleza sin escalas de los NoSQL, se obtienen ciclos de desarrollo más cortos y acceso a datos más rápido (no ORM) – synhershko

+0

NoSQL como RavenDB, por ejemplo, le permiten escribir su modelo para servir contenido del sitio web a través de MVC y luego usar las mismas POCO para almacenamiento. Prácticamente no tiene capa de datos, por lo que se guarda el 75% del tiempo de desarrollo que generalmente se gasta en el modelado de bases de datos. El rendimiento y la escala de datos son muy buenos por defecto, pero se pueden ajustar fácilmente ya que fue diseñado para admitir la fragmentación y la replicación, mientras que en SQL parece más un truco. – synhershko

+0

Más o menos lo que quise decir con el 4º punto. Ser cientos de veces más rápido que la solución anterior basada en SQL es la razón principal por la que uso redis, pero la experiencia de desarrollo se acerca. Sin embargo, no elimina la capa de datos tanto como sugiere: tengo algunos objetos que existen tanto en el almacén de datos como en las vistas MVC, pero para cualquier cosa más allá de los modelos básicos de vista CRUD, terminan con requisitos bastante diferentes de los objetos de datos. –

1

No creo que tenga que mover su base de datos de SQL a NoSQL a menos y hasta que esté sirviendo miles de datos de TB. Si normaliza correctamente sus tablas y sirve los datos y también necesita establecer un mecanismo de archivo adecuado, debería funcionar.

Si todavía tiene preguntas qué elegir y cómo, que check this. Supongamos que ha decidido pasar a la base de datos NoSQL que hay muchos jugadores en el mercado. Simplemente eche un vistazo a list, que nuevamente depende de su necesidad y el tipo de datos que tenga.

Cuestiones relacionadas