Pergunta

Eu sei, banco de dados relacional é um banco de dados onde os campos em uma tabela estão ligando para linhas nos outros, algo como isto.

Mas eu não consigo entender o que isso significa para mim como um desenvolvedor web!

Como eu sei, uma consulta com associações e SELECT aninhada pode reduzir perfomance (especialmente consultas de estilo drupal com dezenas de junta). Ainda mais, as consultas ao DB são os gargalos, e então você tem muitos usuários que você tem para armazenar em cache a cada select pedido.

Se você armazenar em cache cada select pedido, é melhor a pedidos de cache simples e não complicado. Você pode cache "select * from tbl1 onde id = 123" e "SELECT * FROM tbl2 onde id = 456" ou "SELECT * FROM tbl1, tbl2 onde ...", mas se você escolher a segunda maneira, você necessidade de armazenar em cache todas as combinações de objetos -. não é legal

Ok, agora vamos usar apenas consultas muito simples, como "* Selecionar de tbl1 onde id = 123" do "ID seleto de ordem tbl1 por id limite de 0, 30" e cache-los (ou podemos armazenar em cache apenas o primeiro tipo de consultas, qualquer que seja). Há consulta e não menos simples INSERT, DELETE e UPDATE são todos o que precisamos e tudo o que usamos!

Como podemos ver, toda a lógica relacional estão no idioma principal do aplicativo, e não em SQL. Então, por que precisamos de todas essas coisas relacionais? O que eles querem dizer? O que fazer tipo "relacional" tem o que outros tipos não tem, mas ela é necessária? Se não usar os recursos relacionais, por que todo mundo ainda usam o MySQL ou qualquer banco de dados relacional, mesmo que se preocupam com a perfomance?

Este tipo de bases de dados se tornou um padrão. Por quê? Eu não tenho idéia. Eu quase nunca ouviu falar de alguém usando banco de dados não-relacional, exceto para o on no GAE.

Estou faltando alguma coisa?

Foi útil?

Solução

Se você quiser saber mais sobre o que significa relacionais, eu recomendo o livro " SQL e relacional Teoria " por CJ Data.

Relational neste contexto não referem-se a relacionamentos. Refere-se a relações que são basicamente o que mesas são chamados nas teorias matemáticas que levaram à modelo relacional .

A razão pela qual os bancos de dados relacionais tornaram-se onipresentes é que eles são a solução mais de propósito geral para organizar os dados com redundância mínimo.

Há razões válidas para usar soluções não-relacionais. Eles muitas vezes resolver tarefas específicas de gerenciamento de dados extremamente bem, mas são fracos em outras áreas. Considerando SQL e bancos de dados relacionais encontrar um compromisso, resolvendo um conjunto maior de problemas de forma adequada, com menos áreas de fraqueza.

Outras tecnologias actualmente disponíveis que não são baseados no modelo relacional estão listados em " A Next-Gen Databases . "

Outras dicas

Eu estou confuso com sua pergunta. De que outra forma se propõe a manter o controle de como as tabelas diferentes se relacionam entre si? ??

Por exemplo, eu tenho uma lista de carros, e uma lista de pessoas, e eu preciso para se conectar que a pessoa possui cada carro, então eu tenho uma coluna car_ID no banco de dados pessoa. Como proporia manter o controle dessas relações

Além disso, você dizer que você quer para o cache 'todas as consultas são gargalos' e você só quer cache de consultas 'simples'. No entanto, tenho 90% de certeza que fazer várias consultas pequenas serão mais recursos do que fazer várias consultas menores. você também não tem que armazenar em cache cada combinação, apenas aquelas que realmente existem. no meu exemplo, o que há de errado com uma consulta como esta?

SELECT person.*, car.* from person left join on car where person.car_ID = car.ID

Bancos de Dados Relacionais tornaram-se a base de dados de fato para uma série de razões.

  1. Configuração de restrições primárias, estrangeiras e únicas impõe certas regras de negócios com os níveis mais baixos, ajuda a garantir integrety de dados, e faz com que as relações de banco de dados de fácil compreensão para praticamente qualquer nível de profissional de TI.

  2. Um banco de dados relacional devidamente projetado é de fato mais rápido nos bastidores para muitos processos (não todos).

  3. A consulta de banco de dados relacional é bastante rápido para aprender e fácil de fazer.

  4. Bancos de dados relacionais de ajuda limite de dados de duplicação, e do ponto de vista da engenharia de dados, que é uma coisa maravilhosa.

e muitos outros, mas estes são poucos.

Se você não usar as relações, você precisa armazenar tudo em uma mesa gigante com numerosos número de colunas. Ou você pode usar um datacube (eu acho?)

Ele permite que você para normalizar seus dados e redanancy remove. Em vez de armazenar todos os dados em uma mesa plana (como uma planilha Excel), você armazenar dados díspares em mesas separadas e depois relacioná-los entre si.

Por exemplo, você pode armazenar os usuários em uma tabela de usuários e produtos em uma tabela de produtos e, em seguida, usar uma tabela de relacionamento de relacionar qual usuário ordenou que produtos.

UserA -> producta

UserA -> ProductB

UserB -> producta

UserC -> ProductB

Com dados normalizados, isso significa que, se as alterações de dados, ele só precisa ser atualizado em um só lugar. Se um usuário alterar o seu nome, apenas que registro de usuário muda. Se o preço do produto tem de ser aumentado, somente esse registro do produto muda. Você não tem que vasculhar sua mesa plana procurando dados duplicados para substituir.

Valya, se os dados em seu aplicativo não será adicionado para, atualizado ou excluído, em seguida, um cache é o caminho mais rápido para procurar e exibi-lo. Estou curioso para saber o que esses dados é que todo mundo está com tanta pressa para ver, mas não vai ser a actualização? Talvez alguns detalhes ajudaria. Eu conheço alguém que armazenada toda a sua base de dados na memória com um write-through cache, e sim, ele voou! Ele é o único desenvolvedor que eu conheço que poderia conseguir isso. Talvez você precisa de reinventar a motor de foguete, e talvez você não.

Relação é a palavra matemática para a tabela. As colunas são em relação uns com os outros, caso contrário, eles não estavam na mesma mesa.

Por exemplo, dois números estão em relação umas com as outras, se eles diferem um múltiplo de 3. Vamos gravação alguns deles para baixo: (0,0), (1,4), (2, -1), etc. . Você vê uma coleção de linhas aparecer, o que é uma tabela.

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