10

Escribo una aplicación de 'prueba de concepto' para investigar la posibilidad de mover un sistema de comercio electrónico ASP.NET personalizado a Windows Azure durante una reescritura necesaria de toda la aplicación.Azure Table Storage - Prácticas recomendadas de diseño de entidades Pregunta

Intento utilizar Azure Table Storage como una alternativa a SQL Azure ya que las entidades que se almacenan pueden cambiar sus esquemas (propiedades) a medida que la aplicación va madurando, y no necesitaré hacer un esquema de base de datos infinito cambios. Además, podemos construir integridad de referencia en el código de aplicación, por lo que el caso para considerar Azure Table Storage es sólido.

El único problema potencial que puedo ver en este momento es que hacemos una pequeña cantidad de informes simples, es decir, el valor de las ventas entre dos fechas, cantidad de artículos vendidos para un producto en particular, etc. Sé que Table Storage no admite funciones de tipo agregado, y creo que podemos lograr lo que queremos con un uso inteligente de particiones, múltiples tipos de entidades para almacenar subconjuntos de los mismos datos y posiblemente preagrupación, pero no estoy 100% seguro de cómo hacerlo.

¿Alguien sabe de cualquier documento en profundidad sobre los principios de diseño Azure tabla de almacenamiento de manera que hacemos un uso adecuado y eficiente de las Tablas, PartitionKeys y diseño entidad etc.

hay algunos documentos simplistas alrededor, y la corriente los libros disponibles tienden a no profundizar en este tema.

FYI - el sitio de comercio electrónico tiene alrededor de 25,000 clientes y toma aproximadamente 100,000 pedidos por año.

Respuesta

4

Creo que hay tres problemas potenciales que creo al trasladar su aplicación a Table Storage.

  1. La falta de información - incluyendo las funciones de agregado - que ya ha identificado
  2. La limitada disponibilidad de soporte de transacciones - con 100.000 pedidos por año creo que va a terminar perdiendo este apoyo.
  3. Algunos problemas con los costos: $ 1 por millón de operaciones es solo un costo pequeño, pero puede necesitar factorizar esto si obtiene muchas vistas de página.

Honestamente, creo que un enfoque híbrido - ¿quizás EF o NH a SQL Azure para datos críticos, con objetos grandes almacenados en Table/Blob?

¡Basta de mi opinión! Para "en profundidad":

+0

excelentes consejos, gracias, pero realmente me interesaron los consejos sobre dónde obtener información más detallada sobre el diseño de una estrategia PartitionKey/Entity para mitigar el inconveniente de pasar a un DBMS no relacional –

+0

Gracias Dean - He añadido un punto extra sobre AzureScope, pero esto aún no ayudará con su consejo de "mejores prácticas para el uso comercial". Casi todos los consejos que he visto sobre las mejores prácticas realmente han llegado al nivel de "rendimiento", p. cómo diseñar sus llaves para evitar puntos calientes. A nivel práctico, me ha resultado todo un desafío diseñar aplicaciones usando solo el almacenamiento de Azure: la falta de cualquier tipo de indexación secundaria (por ejemplo, map-reduce de RavenDB) hace que el almacenamiento de la entidad clave sea bastante difícil de usar de manera efectiva. puedes duplicar los datos, pero luego terminas con problemas de transacción. – Stuart

+0

buen consejo, muchas gracias –

0

Si ha comenzado a buscar en el almacenamiento de Azure, como en la tabla, no sería dañino mirar otras ofertas de NOSQL en el mercado (especialmente en las bases de datos de documentos). Esto le daría una idea del espacio NOSQL y cómo se diseña la solución alrededor de tales almacenamientos. También puede pensar en un enfoque híbrido de la solución SQL DB + NOSQL. Partes del sistema pueden prestarse muy bien al modelo de almacenamiento de tablas Azure. soluciones NoSQL como tabla de Azure tienen sus propios desafíos tales como

  • Los cambios de esquema de datos. Compruebe here y here
  • Compatibilidad transaccional
  • ACID restricciones. Comprobar here
0

Todos los trabajos de diseño de mesa que he visto son más o menos centrada exclusivamente en los temas de escalabilidad y rendimiento de la búsqueda. No he visto nada relacionado con consideraciones de diseño para informes o BI.

Ahora, las tablas azules son accesibles a través de las API de reposo y mediante el SDK azure. Dependiendo de los informes que necesite, es posible que pueda extraer la información que necesita con un mínimo esfuerzo. Si sus requisitos de informes son muy sofisticados, entonces tal vez SQL Azure junto con los servicios de informes SQL de Windows Azure podrían ser una mejor opción a considerar.

Cuestiones relacionadas