O carbonado é uma camada extensível de abstração de persistência de alto desempenho para aplicações Java, fornecendo uma visão relacional à tecnologia de persistência subjacente. A persistência pode ser fornecida por um banco de dados relacional SQL acessível ao JDBC, ou pode ser um banco de dados Berkeley. Também pode ser totalmente replicado entre os dois.
Mesmo que o banco de dados de apoio não seja baseado no SQL, o Carbonado ainda suporta muitos dos principais recursos encontrados em qualquer tipo de banco de dados relacional. Ele suporta consultas, junta, índices e executa otimização de consultas. Quando usado dessa maneira, o carbonado não é apenas uma camada para um banco de dados relacional, é o banco de dados relacional. O SQL não é um requisito para implementar bancos de dados relacionais.
Definir novos tipos em carbonado envolve a criação de uma interface ou classe abstrata que segue as convenções de feijão Java. Informações adicionais são especificadas inserindo anotações especiais. No mínimo, é necessária uma anotação para especificar a chave primária. As anotações são um recurso disponível pela primeira vez no Java 5 e, como resultado, o carbonado depende do Java 5.
Na superfície, pode parecer que os tipos de carbonado são definidos como pojos. A diferença é que, no carbonado, os tipos são representações de objetos das relações. Não é um banco de dados de objetos nem uma ponte de objeto-relacional. Além disso, as definições de tipo de dados são simplesmente interfaces e não há arquivos de configuração externos. Todo o código para implementar os tipos é gerado automaticamente, mas não há etapas extras de tempo de construção.
O carbonado é capaz de obter alto desempenho, impondo uma sobrecarga muito baixa ao acessar o armazenamento real. A sobrecarga baixa é obtida em parte pela geração automática de código crítico de desempenho, através da biblioteca Cojen.
O Carbonado 1.2 adiciona muitos novos recursos, resumidos aqui e nas notas de lançamento.
Características gerais
Repositórios
Recursos JDBC
Características do motor de consulta
O carbonado é dividido em vários pacotes de pacotes para um melhor gerenciamento de dependência. A maneira mais fácil de começar com o carbonado é usar o repositório de backed berkeley db je. Para isso, você precisa obter os pacotes de pacotes carbonados e carbonadosleepycatje.
O Código Carbonado do Carbonado Core, depende do registro do Apache Commons, Joda-Time e Cojen.
Carbonadosleepycatje contém repositório para apoiar Sleepycat/Oracle, Berkeley DB Java Edition. O código Berkeley DB JE deve ser baixado e instalado separadamente.
Carbonadosleepycatdb contém repositório para apoiar o Sleepycat/Oracle Berkeley DB. O código Berkeley DB deve ser baixado e instalado separadamente.
Mapeamento frouxo da terminologia do carbonado para a terminologia do SQL:
Carbonado | SQL |
---|---|
Repositório | banco de dados |
Armazenar | mesa |
Definição armazenável | Definição da tabela |
Instância armazenável | Tabela Linha |
propriedade | coluna |
Consulta | Selecione/Excluir instrução |
Cursor | conjunto de resultados |
As consultas de carbonado não são tão expressivas quanto as selecionas SQL. Ao contrário do SQL, as consultas carbonadas não suportam o processamento de dados ou as funções agregadas.
O carbonado suporta a capacidade mínima de consulta que possibilita a seleção automática de índices. Outros recursos disponíveis no SQL podem ser emulados no código. Se o banco de dados for local, isso não oferece perda de desempenho.
As aplicações que desejam usar carbonado apenas como uma camada conveniente sobre o SQL não poderão usar os recursos completos do SQL. O carbonado não é de forma alguma um substituto para o JDBC. Esses tipos de aplicações podem escolher uma mistura de carbonado e JDBC. Para facilitar isso, o acesso à conexão JDBC em uso pela transação atual é suportado.
Os repositórios carbonados que são apoiados por Berkeley DB usam um otimizador de consulta baseado em regras para criar um plano de consulta. Os otimizadores baseados em custos são geralmente muito mais eficazes, pois estimam os custos de E/S. O carbonado possui um otimizador baseado em regras principalmente porque é mais fácil de escrever.
O carbonado é capaz de apoiar muitos tipos diferentes de tecnologias de persistência. É necessário um conjunto mínimo de recursos, no entanto, para fornecer recursos suficientes para justificar o esforço:
Idealmente, a tecnologia de persistência deve apoiar transações. Caso contrário, suas transações devem ser implementadas por atualizações em lote na memória. As atualizações não são persistidas até que a transação seja cometida. Se as atualizações do lote atômico forem suportadas, o repositório poderá relatar suportar um nível de isolamento de "leitura comprometida". Caso contrário, ele só pode suportar o nível mais baixo de "Leia não comprometido".
Recursos adicionais que são bons de se ter, mas não estritamente necessários: