Eu queria saber se alguém pode me dizer se o MongoDB ou o CouchDB estão prontos para um ambiente de produção .
Agora estou olhando para essas soluções de armazenamento (estou favorecendo o MongoDB no momento), no entanto, esses projetos são bem jovens e, por isso, prevejo que vou ter que trabalhar muito para convencer meu gerente de que devemos adotar isso. nova tecnologia.
O que eu gostaria de saber é:
Quem está usando o MongoDB ou o CouchDB hoje em um ambiente de produção?
Como você está usando o MongoDB / CouchDB?
Quais problemas (se houver) você se deparou quando adotou esse novo mecanismo de armazenamento (e como os superou)?
Como você lidou com os problemas de migração com os quais teve que lidar?
Você tem alguma experiência boa / ruim com uma dessas soluções que gostaria de compartilhar?
Respostas:
Sou o CTO da 10gen (desenvolvedores do MongoDB), por isso sou um pouco tendencioso, mas também gerencio alguns sites que usam o MongoDB na produção.
businessinsider utiliza o mongo na produção há mais de um ano. Eles estão usando-o para tudo, desde usuários e postagens de blog, até todas as imagens no site.
shopwiki usa para algumas coisas, incluindo análises em tempo real e uma camada de cache. Eles estão fazendo mais de 1000 gravações por segundo em um banco de dados bastante grande.
Se você for para a página Implantações de produção do mongodb, verá algumas pessoas que estão usando o mongo na produção.
Se você tiver alguma dúvida sobre a escala ou o escopo das implantações de produção, poste em nossa lista de usuários e teremos o maior prazer em ajudar.
fonte
A BBC e o meebo.com usam o CouchDB em produção e um de meus clientes. Aqui está uma lista de outras pessoas que usam o Couch: CouchDB em estado selvagem
O grande desafio é saber como organizar seus documentos e parar de pensar em termos de dados relacionais.
fonte
O SourceForge usa o MongoDB. Veja esta apresentação ou leia aqui .
fonte
Estamos executando o CouchDB como um substituto do MySQL para nossas lojas (70.0000 itens / loja, um total de 4 milhões de atributos de todos os itens, conexões cruzadas entre itens).
Nossos objetivos eram:
Fácil replicação de um master-db para vários clientes com documentos diferentes.
Dados pré-calculados rápidos, como "quantas peças tenho com esse atributo e esse filtro, adequados a essas condições"
fatos:
mas também:
Como resultado: o MySQL como banco de dados para criação e manutenção de dados é confiável, fácil de entender e manipular. Eu acho que não vamos mudar isso. Mas também não quero perder o poder das visualizações do CouchDB e a facilidade de configuração da replicação.
Às vezes, os sofás de produção causavam problemas após meses de trabalho devido a configurações incorretas e rotações de log esquecidas (a exibição da construção demora demais ou trava, a replicação para), mas nunca perdia dados e sempre podia ser redefinida com facilidade.
fonte
Estou usando o CouchDB na produção. Atualmente, ele armazena todos os campos 'opcionais' que não estavam no esquema de banco de dados original. E agora estou pensando em mover todos os dados para o CouchDB.
É um passo arriscado, admito. Em primeiro lugar, porque ainda não é a v1.0. E, em segundo lugar, porque é sedento por espaço em disco. Pelos meus cálculos, o arquivo CouchDB (com índices) é ~ 30 vezes maior que o banco de dados MySQL com as mesmas linhas. Mas tenho certeza de que vai dar certo.
fonte
O CouchDB 0.11 (lançado no final de março) é uma versão de congelamento de recursos para a 1.0. Isso significa que manteremos a compatibilidade com a API atual para a 1.0, então agora é uma boa hora para dar uma nova olhada no CouchDB, se você ainda não faz um tempo.
A versão do código-fonte do CouchDB 0.11 está disponível aqui. Existem instaladores binários e outros itens vinculados aqui.
fonte
Não sei nada sobre o MongoDB, mas nas Perguntas frequentes do CouchDB :
Além disso, alguns links:
fonte
Usamos o couchdb na produção e, desde então, pouco antes do projeto ser incluído no Apache.
Nós o usamos para armazenar tudo o que poderíamos usar de um dbms, além de todos os tipos de dados não estruturados. Pessoalmente, gosto muito de como você pode simplesmente lançar todos os tipos de dados e usar as visualizações para selecionar o que você não precisa, dependendo da situação.
A parte mais difícil foi afastar-se da mentalidade dbms. Escrevemos nossos próprios utilitários de migração quando o formato de armazenamento mudou apenas por segurança, e isso não foi realmente um problema.
Ainda não tivemos experiências negativas, mas ainda não tivemos a configuração sob nenhum tipo de carga enorme. Acho que as coisas funcionariam muito bem, já que temos dois servidores escravos que se replicam a partir de um único servidor mestre que recebe todas as gravações. Tenho certeza de que não precisamos fazê-lo dessa maneira para que a replicação funcione corretamente, mas é como a configuramos no início e ela travou.
fonte
Usamos o CouchDB para armazenar mensagens móveis de entrada e saída e para informar sobre esse tráfego por meio de algumas visualizações personalizadas que eu escrevi. O front-end está escrito em Python. Não tivemos nenhum problema técnico real e está em funcionamento desde o final de dezembro. O único obstáculo que encontrei foi pensar inicialmente em termos de MapReduce, mas depois que aprendi como fazer isso, tudo correu bem.
fonte
No momento, estamos usando o MongoDB na produção como camada de armazenamento em cache, bem como mecanismo de armazenamento para importar e manipular dados do produto. Somos uma empresa de comércio eletrônico que gerencia mais de dois milhões de produtos (mais de 100 milhões de atributos), abrangendo mais de 10 distribuidores e sem o MongoDB, essa tarefa seria quase impossível.
fonte
Atualmente, estamos usando o mongodb como um serviço de armazenamento de arquivos para nossa colaboração pela LAN. Além disso, projetos como o trello estão usando o mongodb como seu armazenamento de dados back-end. Eu usei o couchdb anteriormente, mas não em capacidade de produção.
fonte
Estamos usando o MongoDB na produção em nosso serviço de back-end móvel, ou seja, o Netmera. Estamos usando-o para armazenar todos os dados de usuário e conteúdo.
fonte
Uso o CouchDB na produção há quase 2 anos. Não há trabalho de migração, pois o projeto foi iniciado diretamente com a implementação do CouchDB. Ele serve como um banco de dados que armazena os dados de um único produto eletrônico, do início até a embalagem.
Como estamos vendendo sensores com uma demanda de alta precisão, fazemos muitos testes em diferentes estágios e todos eles serão armazenados em um documento no CouchDB.
Há alguma curva de aprendizado que aprendi com minha experiência, que é fazer pleno uso das visualizações (ou também conhecidas como visualizações permanentes). As visualizações devem ser "filtro pequeno" de uma fração do banco de dados que será chamada com frequência.
Meu banco de dados do CouchDB não é tão louco quanto outra empresa gigantesca. Mas até agora, ainda estou indo bem. Atualmente, estou tendo 24.000 documentos com 700 MB.
O recurso do CouchDB que eu gosto é 'replicação', 'armazenar revisões de um documento'.
Eu li muitos comentários bons sobre o MongoDB e vou tentar se houver uma chance.
fonte
Estamos usando o mongodb na produção para
www.beachfront.io - quase 5k de solicitação de gravação por segundo www.beachfrontbuilder.com - 500 solicitações de leitura / gravação por segundo, mantém 10 milhões de dados de usuários e muito mais
O único desafio enfrentado no arquivamento de dados, superamos ao implementar nosso componente personalizado.
fonte
Esta questão já aceitou a resposta, mas hoje em dia mais um NoSQL DB está em tendência para muitos de seus excelentes recursos. É
Couchbase
; que é executadoCouchbaseLite
na plataforma móvel eCouchbase Server
no lado do servidor.Aqui estão alguns dos principais recursos do Couchbase Lite.
O Couchbase Lite é um mecanismo de banco de dados sincronizado e leve, orientado a documentos (NoSQL), adequado para incorporação em aplicativos móveis.
Leve significa:
Incorporado - o mecanismo de banco de dados é uma biblioteca vinculada ao aplicativo, não um processo separado do servidor. Código pequeno - importante para aplicativos móveis, que geralmente são baixados em redes celulares. Tempo de inicialização rápido - importante porque os dispositivos móveis têm CPUs relativamente lentas. Baixo uso de memória - os conjuntos de dados móveis típicos são relativamente pequenos, mas alguns documentos podem ter grandes anexos de multimídia. Bom desempenho - os números exatos dependem dos seus dados e aplicativos, é claro.
Orientado a documentos significa:
Armazena registros no formato JSON flexível em vez de exigir esquemas predefinidos ou normalização. Os documentos podem ter anexos binários de tamanho arbitrário, como conteúdo multimídia. O formato dos dados do aplicativo pode evoluir com o tempo, sem a necessidade de migrações explícitas. A indexação do MapReduce fornece pesquisas rápidas sem a necessidade de usar linguagens de consulta especiais.
Sincronizável significa:
Quaisquer duas cópias de um banco de dados podem ser sincronizadas por meio de um algoritmo de replicação eficiente, confiável e comprovado. A sincronização pode ser sob demanda ou contínua (com latência de alguns segundos). Os dispositivos podem sincronizar com um subconjunto de um grande banco de dados em um servidor remoto. O mecanismo de sincronização suporta conexões de rede intermitentes e não confiáveis. Os conflitos podem ser detectados e resolvidos, com a lógica do aplicativo no controle total da mesclagem. As árvores de revisão permitem topologias de replicação complexas, incluindo servidor para servidor (para vários datacenters) e ponto a ponto, sem perda de dados ou conflitos falsos. O Couchbase Lite fornece APIs nativas para desenvolvimento contínuo de iOS (Objective-C) e Android (Java). Além disso, inclui o plug-in Couchbase Lite para PhoneGap,
Você pode explorar mais no Couchbase Lite
e servidor Couchbase
Isso vai para a próxima grande coisa.
fonte
Falando em produção, failover / recuperação ininterruptos requerem uma babá
1 - Couchbase, não há failover / recuperação ininterrupto, é necessária intervenção manual.
o reequilíbrio leva muito tempo, muito risco se mais de um nó for perdido.
2- Mongo com shards, recuperação de dados perdendo um servidor de configuração, não é uma tarefa fácil
fonte
A Adobe está usando o MongoDB para seu próximo lançamento do Adobe Experience Manager (anteriormente Day CQ ) como o principal mecanismo de banco de dados.
Vários clientes da agência em que trabalho estão usando o CouchDB em projetos para grandes clientes.
Ambos são ótimos e viáveis bancos de dados, na minha opinião. :)
fonte
Aqui está uma lista de sites implantados de produção com o mongoDB
e mais...
Extraído de: http://lineofthought.com/tools/mongodb
Você pode verificar outros bancos de dados ou ferramentas lá também.
fonte
O MongoDB tem alguns problemas com o licenciamento para empresas, não tenho certeza dos detalhes, mas nosso departamento jurídico nos disse em termos claros que não estávamos autorizados a usar o MongoDB em nenhum de nossos produtos.
fonte