Pergunta

Há um monte de informações lá fora sobre um objeto-relacional mappers e a melhor forma de evitar o descasamento de impedância, todos os quais parecem ser discutível pontos se fosse para usar um objeto de banco de dados.A minha pergunta é por que esta não é usada com mais freqüência?É devido a motivos de desempenho, ou porque o objeto de bancos de dados causar os seus dados para se tornar proprietário para seu aplicativo ou é devido a outra coisa?

Foi útil?

Solução

  • Familiaridade. Os administradores de bancos de dados do saber relacional conceitos;objeto queridos, não tanto.
  • Desempenho. Bancos de dados relacionais têm sido comprovada para escala muito melhor.
  • Maturidade. SQL é uma ferramenta poderosa e de longo desenvolveu a linguagem.
  • Suporte do fornecedor. Você pode escolher entre muitos mais a primeira parte (SQL server) e de terceiros (interfaces administrativas, mapeamentos e outros tipos de integração de ferramentas que é o caso com OODBMSs.

Naturalmente, o modelo orientado ao objeto, é mais familiar para o do desenvolvedor, e, como você aponta, deseja poupar uma das ORM.Mas, até o momento, o modelo relacional tem provado ser a mais viável opção.

Ver também a recente questão, Orientada para objetos vs Bancos de dados Relacionais.

Outras dicas

Estou usando db4o o que é um OODB, e resolve a maioria dos contras listados:

  • Familiaridade - Programadores sabem a sua língua melhor, em seguida, SQL (consulte as consultas Nativas)
  • Desempenho - este é altamente subjetiva, mas você pode dar uma olhada em PolePosition
  • Suporte do fornecedor e da maturidade - pode mudar ao longo do tempo
  • Não pode ser usado por programas que não utilizar também o mesmo quadro Há OODB normas e você pode usar diferentes quadros
  • O controle de versão é provavelmente um pouco da puta - o controle de versão é, na verdade, mais fácil!

Os prós eu estou interessado em são:

  • As consultas nativas - Db4o permite escrever consultas em estáticas linguagem, assim você não terá de se preocupar com digitação de uma seqüência de caracteres e achado em falta de dados em tempo de execução,
  • Facilidade de uso - Definição buissiness lógica no domínio camada, camada de persistência (mapeamento) e, finalmente, o banco de dados SQL é certamente a violação dos SECO.Com OODB você define o domínio no qual ele pertence.

Eu concordo - OODB tem um longo caminho a percorrer, mas eles estão indo.E há domínio de problemas lá fora, que são melhor resolvidos por OODB,

Uma objeção a bases de dados de objectos é que ele cria uma estreita ligação entre os dados e o seu código.Para determinadas aplicações, este pode ser OK, mas não para outros.Uma coisa boa que um banco de dados relacional oferece a você é a possibilidade de colocar muitos pontos de vista sobre seus dados.

Ted Neward explica isso e muito mais sobre OODBMSs muito melhor do que este.

Não tem nada a ver com o desempenho.Isto é, basicamente, todas as aplicações teria melhor desempenho com um OODB.Mas que também iria colocar muita DBA fora do trabalho/ter que aprender uma nova tecnologia.Ainda mais pessoas estariam fora do trabalho, correção de erros nos dados.O que é improvável para fazer OODBs popular com empresas já estabelecidas.Gavin parece ser totalmente sem noção, uma melhor ligação seria Kirk

Contras:

  • Não pode ser usado por programas que não utilizar também o mesmo quadro para acessar o armazenamento de dados, tornando é mais difícil para uso em todo o empresa.

  • Menos recursos disponíveis on-line para não SQL com banco de dados

  • Não há compatibilidade com banco de dados tipos (não é possível trocar para um banco de dados diferentes provedor sem alterar todas as o código)

  • O controle de versão é provavelmente um pouco de uma cadela.Eu acho que a adição de um novo propriedade de um objeto não é tão fácil como adicionar uma nova coluna a uma tabela.

Sören

Todas as razões apresentadas são válidas, mas eu vejo o problema com OODBMS é o modelo lógico dos dados.O modelo de objeto (ou melhor, o modelo de rede dos anos 70), não é tão simples como o relacional, e é, portanto, inferior.

jodonnel, eu não' ver como o uso de bases de dados de objectos casais código do aplicativo para os dados.Você ainda pode resumo a aplicação da OODB através do uso de um Repositório padrão e substituir com um ORM feito de banco de dados SQL, se você projetar as coisas corretamente.

Para um OO aplicação, um OO banco de dados irá fornecer um ajuste mais natural para a persistência de objetos.

O que é provavelmente verdade é que você amarrar os seus dados para o modelo de domínio, mas, então, que o ponto crucial!

Não seria bom ter um único modo de olhar para os dados, regras de negócios e processos, utilizando um domínio de uma visão centrada?

Então, um grande pro é que um OODB jogos como mais moderno, o nível de empresa orientada para objetos de aplicações de software são projetados, não há nenhum esforço extra para a concepção de uma camada de dados usando um outro (relacional) do projeto.Mais barato para construir e manter, e, em muitos casos, em geral mais elevados de desempenho.

Contras, apenas a falta de maturidade e de adoção, eu acho que...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top