porta microsoft management azure azure-sql-database azure-table-storage

microsoft - Azure Tables o SQL Azure?



porta azure (10)

Estoy en la etapa de planificación de una aplicación web que se hospedará en Azure con ASP.NET para el sitio web y Silverlight dentro del sitio para una rica experiencia de usuario. ¿Debo usar Azure Tables o SQL Azure para almacenar mis datos de aplicación?



Azure Table Storage parece ser menos costoso que SQL Azure. También es más altamente escalable que SQL Azure.

Es más fácil trabajar con SQL Azure si has estado haciendo un montón de trabajo de base de datos relacional. Si estuviera portando una aplicación que ya estaba usando una base de datos SQL, moverla a SQL Azure sería la elección obvia, pero esa es la única situación en la que lo recomendaría.

La principal limitación en Azure Tables es la falta de índices secundarios. Esto se anunció en el PDC ''09 y actualmente figura como próximamente, pero no ha habido ningún anuncio de marco de tiempo. (Ver http://windowsazure.uservoice.com/forums/34192-windows-azure-feature-voting/suggestions/396314-support-secondary-indexes?ref=title )

He visto el uso propuesto de un sistema híbrido en el que utiliza almacenamiento de tablas y blobs para la mayoría de sus datos, pero usa SQL Azure para índices, búsquedas y filtros. Sin embargo, todavía no he tenido la oportunidad de probar esa solución.

Una vez que los índices secundarios se agreguen al almacenamiento de la tabla, será esencialmente un sistema NoSQL basado en la nube y será mucho más útil de lo que es ahora.


Creo que primero debe definir cuáles son los embudos de uso de su aplicación. ¿Su modelo de datos estará sujeto a cambios frecuentes o es estable? Tienes que ser capaz de realizar inserciones ultra rápidas y las lecturas no son tan complicadas. ¿Necesita una búsqueda anticipada de google like? ¿Almacenando BLOBS?

Esas son las preguntas (y no solo) que tiene que hacerse y responderse usted mismo para decidir si es más probable que use el enfoque NoSql o SQL para almacenar sus datos.

Tenga en cuenta que ambos enfoques pueden coexistir fácilmente y también se pueden ampliar con el almacenamiento BLOB.


Las tablas Azure son más baratas, más simples y tienen mejor escala que SQL Azure. SQL Azure es un entorno SQL administrado, de naturaleza multicliente, por lo que debe analizar si sus requisitos de rendimiento son adecuados para SQL Azure. Se ha anunciado una versión premium de SQL Azure y está en vista previa a partir de este momento (ver HERE ).

Creo que los factores decisivos para decidir entre SQL Azure y las tablas de Azure son los siguientes:

  • ¿Necesita hacer combinaciones complejas y usar índices secundarios? En caso afirmativo, SQL Azure es la mejor opción.
  • ¿Necesitas procedimientos almacenados? Si es así, SQL Azure.
  • ¿Necesita capacidades de escalamiento automático? Las tablas azules son la mejor opción.
  • Las filas dentro de una tabla de Azure no pueden superar los 4 MB de tamaño. Si necesita almacenar datos grandes dentro de una fila, es mejor almacenarlos en el almacenamiento de blobs y hacer referencia al URI del blob en la fila de la tabla.
  • ¿Necesita almacenar cantidades masivas de datos semiestructurados? Si es así, las tablas Azure son ventajosas.

Aunque las tablas de Azure son tremendamente beneficiosas en términos de simplicidad y costo, hay algunas limitaciones que deben tenerse en cuenta. Por favor, mira HERE para una guía inicial.


Me doy cuenta de que esta es una vieja pregunta, pero sigue siendo muy válida, así que le agrego mi respuesta.

CoderDennis y otros han señalado algunos de los hechos: Azure Tables es más barato, y Azure Tables puede ser mucho más grande, más eficiente, etc. Si está 100% seguro de que se quedará con Azure, vaya con Tables.

Sin embargo, esto supone que ya se ha decidido por Azure. Al usar Azure Tables, te estás encerrando en la plataforma Azure. Significa escribir un código muy específico para Azure Tables que no solo va a pasar a Amazon, tendrá que volver a escribir esas áreas de su código. Por otro lado, la programación de una base de datos SQL con LINQ transferirá de forma mucho más fácil a otro servicio en la nube.

Esto puede no ser un problema si ya ha decidido sobre su plataforma en la nube.


Me pregunto si vamos a terminar con algunas bibliotecas de API en la nube "independientes del proveedor" a su debido tiempo.


Otra consideración es la latencia. Solía ​​haber un sitio que Microsoft ejecutaba con microbenchmarks sobre el rendimiento y la latencia de varios tamaños de objetos con table store y SQL Azure. Como ese sitio ya no está disponible, te daré una aproximación aproximada de lo que recuerdo. Table store tiende a tener un rendimiento mucho mayor que SQL Azure. SQL Azure tiende a tener una latencia más baja (hasta una quinta parte).

Ya se mencionó que la tienda de mesa es fácil de escalar. Sin embargo, SQL Azure también puede escalar con Federations . Tenga en cuenta que Federaciones ( sharding efectiva) agrega mucha complejidad a su aplicación. Tampoco estoy seguro de cuánto afectan las Federaciones al rendimiento, pero imagino que hay algo de sobrecarga.

Si la continuidad del negocio es una prioridad, considere que con Azure Storage obtiene una geo-replicación barata por defecto. Con SQL Azure, puede lograr algo similar pero con más esfuerzo con SQL Data Sync . Tenga en cuenta que SQL Data Sync también incurre en gastos generales de rendimiento ya que requiere desencadenantes en todas sus tablas para detectar cambios en los datos.


Para aquellos que intentan decidir entre las dos opciones, asegúrese de incluir los requisitos de informe en la ecuación. SQL Azure Reporting y otros productos de informes son compatibles con SQL Azure directamente. Si necesita generar informes complejos o flexibles, probablemente desee evitar el almacenamiento de tabla.


Para su pregunta, quiero hablar sobre cómo decidir con lógica elegir SQL Table y qué necesidad usar Azure Table.

Como sabemos SQL Table es un motor de base de datos relacional. pero si tiene un gran dato en una tabla, la Tabla SQL no es aplicable, porque la consulta SQL obtiene grandes datos es lenta.

En este momento puede elegir Azure Table, la consulta de Azure Table es tan rápida que SQL Table para Big Data, por ejemplo, en nuestro sitio web, alguien suscrito a muchos artículos, hacemos el artículo como feed para el usuario, cada usuario tiene una copia de título del artículo y descripción, entonces en la tabla de artículos hay muchos datos, si usamos SQL Table, cada ejecución de la consulta puede tomar más de 30 segundos. Pero en Azure Table obtiene la alimentación de artículos de los usuarios por PartitionKey y RowKey es muy rápido.

En este ejemplo, puede saber cómo elegir entre SQL Table y Azure Table.


Sugiero mirar Azure Cache en combinación con Azure Table. La tabla solo tiene latencias de 200-300 ms, con picos ocasionales más altos, lo que puede ralentizar significativamente la interactividad de tiempos de respuesta / UI. Cache + Table parece ser una combinación ganadora, para mí.