2010-08-06 18 views
21

Vi que había una pregunta similar hace varios meses, pero realmente no solucionó mi problema. Aquí va ...Microsoft Azure Storage vs. Azure SQL Database

Estoy en el proceso de construir desde cero una aplicación .NET basada en la web que tiene el potencial de convertirse en un sitio de gran volumen (varios cientos de miles de páginas visitadas al mes para empezar) y estoy considerando usar Microsoft Azure para alojarlo. Aún no he construido nada y todavía estoy investigando mis diferentes opciones.

La aplicación en sí es, en esencia, una aplicación CRUD estándar que actúa sobre una serie de diferentes tipos de entidades (por ejemplo, usuario, orden, artículo, etc.). Probablemente se estén ejecutando algunos procesos en segundo plano y algunos cola de datos (para actualizaciones que no son en tiempo real, como obtener una insignia SO, por ejemplo), pero la mayoría de las interacciones con el usuario serán las acciones típicas de CRUD.

En cuanto a Azure, he leído varios artículos sobre el uso de almacenamiento de Microsoft Azure para almacenar datos transaccionales y estoy considerando hacerlo en lugar de usar SQL DB de Azure. Sin embargo, no he visto ni leído una serie de historias de éxito de personas reales o empresas reales que hacen eso. Así que pensé en contactar a la comunidad de SO para ver si alguien ha tenido alguna experiencia con el uso de Microsoft Azure Storage, qué tipo de suerte has tenido, cualquier problema que debería tener en cuenta y las mejores prácticas que hayas realizado. presentar.

He leído mucho sobre la sección MSN de Microsoft Azure y sobre la programación del documento API de Microsoft Azure Table de Microsoft. Estoy buscando consejos prácticos, lecciones aprendidas, mejores prácticas, etc. ¡Gracias de antemano!

Respuesta

13

El almacenamiento de Windows Azure es como cualquier almacenamiento NoSQL. Funciona en escenarios de alta escala for us (bombeo de millones de registros por usuario). Sin embargo, el enfoque CRUD clásico es un poco difícil de escalar o adaptarse a esto.

Recomendaría empezar a buscar a lo largo de CQRS style of architectures. Aquí hay algunas referencias que puede empezar:

+2

Gracias por la información. Hice un escaneo rápido de parte de la información que me proporcionó (lo veré más a fondo más adelante este fin de semana). Una pregunta: con los proyectos/productos en los que trabajó, ¿utilizó SQL Azure junto con Azure Storage o simplemente utilizó Azure Storage? Parece que algunos de los documentos con los que se vinculó mostraban que SQL Azure se usaba con Azure Storage. Si utilizó SQL Azure, ¿se utilizó para el lado del comando de CQRS y luego se movió al almacenamiento de Azure? Gracias de nuevo. –

+0

Esta es una buena información y me señala en la dirección correcta. ¡Gracias! –

+0

Estamos utilizando SQL Azure con almacenamiento de Azure en el lado del comando. SQL Azure para los datos relacionales, almacenamiento de Azure para los blobs, las colas y los datos de visualización. En teoría, SQL Azure podría ser reemplazado por el abastecimiento de eventos, pero todavía no lo logramos. –

1

También debe comprobar su patrón de uso de datos antes de decidir utilizar Azure Almacenamiento o almacenamiento SQL. Dado que Azure Storage proporciona soluciones NoSQL, están más orientadas a los requisitos básicos que no informan. Aquí, informar no significa informes, pero implica que las capacidades de consulta del almacenamiento de Azure son limitadas y no optimizadas para varios escenarios de consulta. Con la arquitectura CQRS, las operaciones CRUD e Informes están desacopladas y, por lo tanto, se puede hacer una combinación n de Azure Storage y Azure SQL.

+0

Gracias. Esto ayuda, también. Estaba considerando usar una combinación y combinación entre el almacenamiento de la tabla y el azul de sql. No estoy seguro de cuánto debo guardar en sql azul. ¿Su experiencia básicamente tiene una duplicación de datos entre sql azul y azul? –

+0

No se trata de cuánto mantener donde. Por ejemplo, si está implementando un escenario Autenticación de usuario \ Autorización, todo el patrón de acceso a datos girará en torno a un usuario en particular siempre y NoSQL funciona mejor aquí. Pero dentro de lo mismo si queremos una interfaz de administrador para administrar usuarios, lo que implica mostrar la lista de usuarios, filtros, etc. que mejor se adapte al formato de relación de datos. En este caso, mantendría copias duplicadas de los datos del usuario en las tiendas NoSQL y SQL, pero solo confiará en la base de datos NoSQL para realizar cualquier validación comercial.Necesitaríamos algún mecanismo para sincronizar el almacén de datos del usuario (One way) – Chandermani

+0

Por lo tanto, debe pensar si esta complejidad está garantizada para su aplicación. – Chandermani

1

Otro lugar para encontrar información es salir de las opciones de Windows Azure y mirar AWS. Las opciones S3 & SimpleDB han sido revisadas durante un período de tiempo más largo y tienen muchas historias de éxito adicionales disponibles en la web. Sin embargo, S3 & SimpleDB son muy similares en funcionalidad a Windows Azure Storage Table y Blob Storage. Si está pensando en datos verdaderamente grandes, para los cuales son estas estructuras, definitivamente revise las opciones de AWS. Si solo fuera por un punto de referencia sobre soluciones existentes construidas alrededor de big data.

En cuanto a SQL Azure, es ideal para muchas transacciones, manteniendo bajos los costos de transacción y manteniendo relaciones e integridad general basadas en datos relacionales.Sin embargo, si va a tener volúmenes masivos de datos, simplemente siga adelante y apunte a las estructuras de big data, como Windows Azure Table o SimpleDB de Amazon.

+0

gracias por el consejo. ¡Lo comprobaré! –

8

Depende del tipo de datos de que se trate; en general, existe una tendencia a sobreestimar los requisitos de datos transaccionales. Una gran cantidad de datos realmente pueden encajar en un SQL Azure de 1 GB (somos un proveedor de SAAS y los datos transaccionales de casi 20 clientes pueden caber en ese espacio). Además, por alguna extraña razón, he visto que el consumo de espacio de SQL Azure parece ser algo menor que el tamaño de la base de datos que veo en las instalaciones (puede que tenga que ver con la forma en que manejan los registros, no estoy seguro). Y ahora 50 GB es el límite, lo que es francamente, ENORME.

Sin embargo, también debe tener en cuenta lo que aumenta el uso del espacio: el almacenamiento de imágenes, videos u otros objetos grandes en la base de datos puede aumentar considerablemente el consumo de espacio. Es mejor mantener este tipo de objetos en Windows Azure.

Respuesta breve: mantenga los datos transaccionales en SQL Azure y los datos no relacionales en Windows Azure. Trabajar con SQL Azure también mantendrá a los desarrolladores más productivos, ya que es bastante familiar en términos de programación. Trate Windows Azure de forma similar a cómo trataría el almacenamiento local de archivos de Windows con algunos beneficios adicionales (estructuras de tabla básicas compatibles).

+0

gracias por la perspectiva. Cuando usa Windows Azure para almacenar datos no transaccionales, ¿usa una combinación de almacenamiento de tabla y blobs? ¿Usas unidades en absoluto? ¡Gracias! –

+0

Usamos los primeros dos discos: es bastante nuevo, todavía no se ha encontrado un buen lugar para usarlos. Perdió esto, pero las tablas azules son excelentes para escribir registros, especialmente registros de uso. Los blobs son ideales para imágenes, videos y otros archivos grandes Drive es cuando necesita tener algo similar a los discos duros locales. Sin embargo, estos son específicos de la instancia (significa que solo una instancia puede escribir en una unidad a la vez) y no como el almacenamiento azul al que pueden acceder varias instancias al mismo tiempo. –

+0

pls, ayúdame http://stackoverflow.com/questions/14156980/error-when-try-to-save-in-windows-azure-table – Ladessa

4

Otra cosa a considerar es el número de transacciones que va a enviar/recibir de la tienda. Lo bueno de SQL Azure es que es un costo/mes fijo y si está realizando las consultas dentro del mismo centro de datos (es decir, desde una función web de Windows Azure ubicada en el mismo centro de datos que su base de datos SQL Azure), entonces hay sin cargos adicionales

Aunque el costo de las transacciones en las tiendas de Windows Azure es bastante bajo, es algo que tiene el potencial de sumarse si se hacen suficientes.

+0

pls, ayúdame http://stackoverflow.com/questions/14156980/error-when-try-to-save-in-windows-azul-tabla – Ladessa

Cuestiones relacionadas