2010-03-02 11 views
8

¿Alguien tiene alguna buena fuente de información sobre el uso de NHibernate con Sql Azure con las implicaciones de la fragmentación (debido a la tapa de 10 gb)? Sé que hay publicaciones en Internet que hacen referencia a un proyecto de fragmentación para NH, pero son del tercer trimestre de 2009 y no he encontrado mucho más relevante en Google.NHibernate con Sql Azure y Sharding

Relacionado ¿Alguien tiene información sobre la implementación manual de sharding si el proyecto de fragmentación no es viable de usar todavía? ¿Sería tan simple como crear una fábrica de sesiones para cada fragmento y mantener una colección de fábricas? Parece que sería problemático reproducir las llamadas de ISession a través de cada fábrica; sin embargo, supongo que podría lograrse pasando las operaciones como Funcs que se invocan en la ISession de cada fábrica pero parece más bien como el camino equivocado para bajar.

+0

Me doy cuenta de que su pregunta de sharding fue respondida, pero en junio de 2010, SQL Azure tendrá un tamaño de almacenamiento de 50 gb. Esto podría eliminar (o al menos reducir) la necesidad de fragmentación. Ver http://blogs.msdn.com/sqlazure/archive/2010/03/19/9981936.aspx –

+0

@David gracias por esta publicación, esta es de hecho una gran noticia, ya que un DB de 50GB es bastante sustancial y relativamente fácil de trabajar dentro de si archivas los datos del historial, pero 10 GB para cualquier plataforma empresarial se pueden agotar rápidamente. –

Respuesta

4

Escribí una prueba de concepto hace aproximadamente un mes utilizando NHibernate en SQLAzure/Sharding. Como ha señalado, hay aspectos que simplemente no se sienten bien al respecto. Hasta que el soporte de NH haya evolucionado, es posible que tengas que probar algunas cosas para descubrir qué funciona mejor para ti. Puedo decirle un flujo general de cómo funcionó para nosotros.

Implementamos una fábrica de estrategia simple de fragmentación que proporciona estrategias que deciden en qué fragmento ubicarlo en función de nuestras necesidades. Sus necesidades pueden variar aquí. La clave es crear estrategias que procesen, fusionen y ordenen los resultados de su consulta. A partir de ahí, la creación y el uso de la sesión es todo lo mismo que cualquier otro uso de la sesión, lo cual es muy deseable.

EDIT: Sé que this post by Ayende tiene unos pocos meses, pero es exactamente cómo lo implementamos y funciona. El rumor es que habrá un mejor apoyo en nHibernate.

+0

Esa es la primera vez que veo esa publicación definitivamente muy útil para ver. –

+0

Realmente esperaba obtener más información en esta pregunta, que es la razón por la que establecí la mayor recompensa que he hecho en esta cuestión, pero su publicación me dio más información que yo y usted fue la única persona que ofreció ayuda, así que le di el Bounty en lugar de dejar que SO lo expire y te dé la mitad. –

+0

Gracias, Chris. También esperaba que más personas saltaran sobre esto porque tenía curiosidad por ver si alguien tenía una mejor solución. :-) – Kilhoffer