como um servidor de arquivos 'normal, mas enorme':
com uma biblioteca em nível de aplicativo semelhante a um arquivo:
- amazon S3
- cloudfiles rackspace
- mogilefs
valor-chave genérico:
- mongoDB
- BDB
- gabinete tokyo
- ... muitos outros
O aplicativo da web em que estou trabalhando será usado para fazer o upload / download de grandes quantidades / quantidades de arquivos de tamanho menor. Estou vendo arquivos próximos de 1B com tamanho total de > 10Pb. Atualmente, estou lutando para decidir a arquitetura escalonável que suportaria esses valores. E aqui está a minha pergunta - existe uma maneira de construir algum tipo de armazenamento que seria visto por um servidor Windows como uma enorme unidade de armazenamento de rede (10pb e acima), para que eu possa gravar todos os arquivos em subpastas dessa unidade virtual? E como isso funcionaria?
Neste momento, estou tentando entender se isso é possível, ou se preciso implementar o sharding em nível de software - gravar arquivos em unidades diferentes com base em alguma chave.
Sou um desenvolvedor, não um administrador de sistemas, por isso peço desculpas se for uma pergunta ingênua e agradeço antecipadamente por ter paciência em me explicar coisas possivelmente triviais.
Andrey
como um servidor de arquivos 'normal, mas enorme':
com uma biblioteca em nível de aplicativo semelhante a um arquivo:
valor-chave genérico:
Veja como Backblaze está armazenando seus dados. Muito boa leitura e eles têm um blog sobre as novas unidades de 3 TB. Isso provavelmente não responderá à pergunta sobre o sistema de arquivos. Não tenho certeza de como o Backblaze faz a estrutura do arquivo. Mas boa informação, no entanto.
Antes de continuar procurando, você precisa decidir um pouco mais exatamente que tipo de semântica você precisa. Por exemplo, você diz que eles são arquivos - você precisa da semântica do arquivo POSIX (principalmente preocupada com a consistência e o bloqueio) neles no armazenamento? ou a consistência eventual de vários datastores distribuídos é suficiente? Quais são seus requisitos de E / S: quanto acesso simultâneo? Quais são os seus requisitos de redundância? Além disso, que tipo de hardware você vai usar? Matrizes de 10Pb não crescem em árvores e apenas gerenciá-las é um trabalho em tempo integral - tanto hardware significa que a falha é um evento normal, portanto, consertos e substituições constantes são necessários.
Do que você disse "aplicativo da web ... armazenando arquivos ..." Acho que um OpenStack ou S3 tipo de solução deve fazer você. Como você é um desenvolvedor em sua maioria, sugiro que você queira realmente usar a amazon ou o Rackspace ou quem quer que seja seu provedor a menos que você queira entrar no negócio de gerenciamento de hardware.
Atualmente, você pode considerar o HDFS e o ecossistema geral do Hadoop.