Como o Azure DocumentDB é escalado? E preciso me preocupar com isso?

Eu tenho um aplicativo que está superando o SQL Azure - pelo preço que estou disposto a pagar, pelo menos - e estou interessado em investigar o Azure DocumentDB. A visualização possui claramente limites de escalabilidade distintos (como descritoaqui, por exemplo), mas acho que provavelmente poderia me dar bem com os do período de visualização, desde que eu o esteja usando corretamente.

Então aqui está a pergunta que tenho. Como preciso projetar meu aplicativo para aproveitar a escalabilidade interna do Azure DocumentDB? Por exemplo, eu sei que com o Armazenamento de tabelas do Azure - que barato, mashorrível alternativa altamente limitada - você precisa estruturar todos os seus dados em uma hierarquia de duas etapas: PartitionKey e RowKey. Desde que você faça isso (o que é quase impossível em um aplicativo do mundo real), o ATS (como eu o entendo) move partições nos bastidores, de máquina em máquina, para obter uma escalabilidade quase infinita. Incrível, e você nunca precisa pensar nisso.

A expansão com o SQL Server é obviamente muito mais complicada - você precisa projetar seu próprio sistema de sharding, lidar com a descoberta de qual servidor o shard em questão fica e assim por diante. Possível e bem feito, escalável, mas complexo e doloroso.

Então, como a escalabilidade funciona com o DocumentDB? Ele promete escalabilidade arbitrária, mas como o mecanismo de armazenamento funciona nos bastidores? Vejo que ele tem "Bancos de Dados", e cada banco de dados pode ter algum número de "Coleções" e assim por diante. Mas como sua escalabilidade arbitrária é mapeada para esses outros conceitos? Se eu tiver uma tabela SQL que contém centenas de milhões de linhas, obterá a escalabilidade necessária se colocar todos esses dados em uma coleção? Ou preciso espalhá-lo manualmente em várias coleções, fragmentadas de alguma forma? Ou através de vários bancos de dados? Ou o DocumentDB é, de alguma forma, inteligente o suficiente para agrupar consultas de maneira eficiente em várias máquinas, sem que eu precise pensar em nada disso? Ou...?

Eu tenho olhado em volta e ainda não encontrei nenhuma orientação sobre como abordar isso. Muito interessado no que outras pessoas encontraram ou no que a MS recomenda.

questionAnswers(3)

yourAnswerToTheQuestion