MongoDB ou CouchDB - adequado para produção? [fechadas]


485

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 é:

  1. Quem está usando o MongoDB ou o CouchDB hoje em um ambiente de produção?

  2. Como você está usando o MongoDB / CouchDB?

  3. Quais problemas (se houver) você se deparou quando adotou esse novo mecanismo de armazenamento (e como os superou)?

  4. Como você lidou com os problemas de migração com os quais teve que lidar?

  5. Você tem alguma experiência boa / ruim com uma dessas soluções que gostaria de compartilhar?


2
Procurando pelas respostas, eu realmente não encontrei o que estava procurando. Como os dois bancos de dados são muito parecidos, qual deles devo escolher? Quais são os benefícios de qualquer um deles? Para que tipo de aplicativo devo escolher qual? Seria bom se alguém pudesse responder a essas perguntas.
precisa saber é

Realmente depende de como eles serão usados. A falta de transações é preocupante para muitos ambientes, mas perfeitamente adequada para outros. Além disso, é fundamentalmente difícil "fazer backup" de um banco de dados distribuído, embora o argumento seja que a persistência dos dados seja garantida através da replicação em vários shards.
Samuel O'Malley

2
@ pauluss86 Eu acho que você provavelmente deveria adicionar o aviso ao link da pauluss86 de que o autor (Emin) é realmente um concorrente do MongoDB (Hyperdex) - então apenas um pequeno viés por lá. Para ser realmente justo, há uma resposta correspondente no InfoQ do MongoDB aqui - infoq.com/news/2013/02/MongoDB-Fault-Tolerance-Broken #
victorhooi

@victorhooi verdade, mas continua sendo uma preocupação válida na minha opinião. Também há um acompanhamento da resposta da InfoQ: link . Pessoalmente, não estou muito convencido pela defesa de Mongo. De qualquer forma, recomendo a todos que leiam o problema (ambos os lados) antes de escolher um banco de dados.
pauluss86

Isto diz tudo db-engines.com/en/ranking MongoDB está ganhando terreno dia a dia e é o mais popular Documento loja na web
arkoak

Respostas:


268

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.



1
você se importaria de fazer o mongodb funcionar com a v8 como padrão. e o mongodb consome muita memória para pessoas pobres que usam um VPS com 512M de memória.
Guilin桂林

Você pode ter pelo menos AC (i) D - atomicidade como gravador mestre único, consistência porque possui consistência por documento, durabilidade porque é possível especificar quantas gravações são necessárias antes da gravação ACK, por exemplo, quantos outros nós precisam obter os dados antes ACKing.
Henrik

+1 para os links. incrível como muitos ppl usar o MongoDB na produção
Michael Malura

Parece que muitas coisas mudaram nos últimos 5 anos. Essa lista é enorme! :)
assíncrono

110

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.


7
Na verdade, para mim, o maior desafio é voltar, se você precisar. Depois de remover "restrições relacionais" da sua mente, é difícil voltar atrás. :)
johndodo


34

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:

  1. Fácil replicação de um master-db para vários clientes com documentos diferentes.

  2. Dados pré-calculados rápidos, como "quantas peças tenho com esse atributo e esse filtro, adequados a essas condições"

fatos:

  1. Nossas lojas agora estão funcionando muito mais rápido do que com o MySQL (e o banco de dados mysql precisava de mais 1-3 dias de pré-cálculo (a atualização era duas vezes por mês), deixando os dados prontos para a contagem e filtragem de produtos, o CouchDB precisa de 5 horas. podemos atualizar os dados do produto todas as noites)
  2. Configurar distribuição e backups de dados (filtrados) para os nós da loja é rápido e fácil

mas também:

  1. Entender mapear / reduzir e os limites de não ter junções é bastante difícil
  2. Nenhuma operação em dados como "excluir onde" ou "atualizar onde" sem programas externos
  3. A replicação funciona bem, a menos que haja um problema; então é realmente difícil descobrir qual foi o motivo (para iniciantes)
  4. A instalação do CouchDB sem binários (sim, existem alguns em estado selvagem, mas não para todos os SO / versões) pode ser difícil, se você não for um geek do Linux. Mas a Comunidade CouchDB é útil (#couchdb) e, felizmente, existem empresas por aí (cloudant, iriscouch) que oferecem serviços gratuitos a grandes empresas.
  5. O CouchDB está avançando, então há muitas mudanças (melhorias) acontecendo que podem mudar a maneira como você trabalha. Mas as coisas básicas permanecem estáveis.

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.


70 000 ou 700 000 itens por loja? Além disso, algo mudou desde que você escreveu o post? alguns recursos ausentes implementados, talvez?
Erik Kaplun

27

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.


1
Bem, não deu certo. Eu me livrei do couchdb depois de alguns meses.
Sergio Tulentsev 30/01

@etheria: Não suportou a carga. Além disso, tivemos tantas gravações que precisaríamos compactá-las a cada hora. O CouchDB não é para aplicativos com gravação pesada.
Sergio Tulentsev 25/02

Obrigado. Estou certo de que são as atualizações dos documentos existentes que são o problema? ou seja, escrever novos documentos é bom, mas a atualização deixa lixo não utilizado no arquivo. Isso está correto?
25414

IIRC, mesmo novas gravações não tiveram muito desempenho. Muito disco procura com essa abordagem de cabeçalho duplo.
Sergio Tulentsev 25/02

2
@aetheria: de volta ao mysql e depois ao mongo. Tinha uma boa parte dos problemas em todos os lugares. :)
Sergio Tulentsev 25/02


17

Não sei nada sobre o MongoDB, mas nas Perguntas frequentes do CouchDB :

O CouchDB está pronto para produção?

Sim, consulte InTheWild para obter uma lista parcial de projetos usando o CouchDB. Outra boa visão geral são os Estudos de Caso do CouchDB

Além disso, alguns links:


Esta é uma notícia antiga: agora o link diz "Sim, consulte o InTheWild para obter uma lista parcial de projetos usando o CouchDB. Outra boa visão geral é os estudos de caso do CouchDB"
J Chris A

14
@J Chris R: Claro que é velho, eu postei isso há um ano e meio atrás. :)
Sasha Chedygov 30/11/2010

16

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.


13

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.


9

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.


2
Qual a confiabilidade do mongoDB para você? + Quão bem a replicação funcionou na vida real?
Industrial

4
Implementamos a topologia do conjunto de réplicas executando a versão 1.6. (Não temos certeza de qual versão secundária está disponível). Até agora, o único problema que encontramos foi aparentemente quando um disco ficou sem espaço, mesmo com as gravações salvas ativadas, nenhum sinalizador é gerado. Portanto, verifique se você tem muito espaço!
Joshua Burns

1
A confiabilidade, no entanto, tem sido fenomenal, surpreendentemente tão boa quanto esperávamos. Ainda não há problemas com falhas- Embora essa seja uma nova implementação.
Joshua Burns

1

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.


0

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.


0

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.


0

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.


0

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 é executado CouchbaseLitena plataforma móvel e Couchbase Serverno 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.


0

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


0

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. :)


-2

Aqui está uma lista de sites implantados de produção com o mongoDB

  • The New Yorks Times : Utilizando-o em um aplicativo de criação de formulários para envio de fotos. A falta de esquema do Mongo oferece aos produtores a capacidade de definir qualquer combinação de campos de formulário personalizados.
  • SourceForge : é usado para armazenamento de back-end nas primeiras páginas, nas páginas do projeto e nas páginas de download do SourceForge para todos os projetos.
  • Bit.ly
  • Etsy
  • IGN : habilita as análises de tráfego em tempo real da IGN e as APIs de conteúdo RESTful.
  • Justin.tv : fornece ferramentas de análise interna do Justin.tv para estatísticas de viralidade, retenção de usuários e uso geral que as soluções prontas para uso não podem fornecer.
  • Posterous
  • intuito
  • Quadrangular : os bancos de dados Mongo Sharded são usados ​​para a maioria dos dados no quadrangular.
  • Business Insider : use-o desde o início de 2008. Todos os dados do site, incluindo postagens, comentários e até mesmo as imagens, são armazenados no MongoDB.
  • Github : é usado para um aplicativo de relatório interno.
  • Examinador : migrou o site do Cold Fusion e SQL Server para o Drupal 7 e o MongoDB.
  • Grooveshark : atualmente usa o Mongo para gerenciar mais de um milhão de sessões de usuário únicas por dia.
  • Buzzfeed
  • Disco
  • Evite : usado para análises e relatórios rápidos.
  • Squarespace
  • Shutterfly : é usado para vários requisitos persistentes de armazenamento de dados no Shutterfly. O MongoDB ajuda o Shutterfly a criar um serviço incomparável que permite relacionamentos mais profundos e pessoais entre os clientes e os que mais importam em suas vidas.
  • Topsy
  • Compartilhar isso
  • Mongohq : fornece uma plataforma de hospedagem para o MongoDB e também usa o MongoDB como back-end para seu serviço. Nossa página de centros de hospedagem fornece mais informações sobre o MongoHQ e outras opções de hospedagem do MongoDB.

e mais...

Extraído de: http://lineofthought.com/tools/mongodb

Você pode verificar outros bancos de dados ou ferramentas lá também.


Adicionado grande parte da lista ao post
fernandopasik

-6

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.


1
Embora você não tenha especificado os problemas exatos com o licenciamento, não há nada errado com o licenciamento MongoDB mongodb.org/about/licensing Ele usa a licença AGPL, que pode ser a causa de preocupações em seu departamento jurídico, mas eles afirmam que qualquer cliente de banco de dados é trabalho separado. "prometemos que seu aplicativo cliente que usa o banco de dados é um trabalho separado. Para facilitar isso, os drivers suportados pelo mongodb.org (a parte que você vincula ao seu aplicativo) são liberados sob a licença Apache, que é livre de copyleft."
Marek
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.