/ / Banco de dados adaptável - banco de dados, orm

Banco de Dados Adaptativo - banco de dados, orm

Existe alguma ferramenta rápida de prototipagem de banco de dados que não exija que eu declare um esquema de banco de dados, mas crie-o com base na maneira como estou usando minhas entidades.

Por exemplo, assumindo um banco de dados vazio (pseudo-código):

user1 = new User()  // Creates the user table with a single id column
user1.firstName = "Allain" // alters the table to have a firstName column as varchar(255)

user2 = new User()  // Reuses the table
user2.firstName = "Bob"
user2.lastName = "Loblaw"  // Alters the table to have a last name column

Como existem suposições lógicas que podem ser feitas ao criar o esquema dinamicamente, você sempre pode substituir suas opções usando suas ferramentas de banco de dados para ajustá-lo posteriormente.

Além disso, você pode gerar seu esquema testando-o dessa maneira.

E, obviamente, isso é apenas para prototipagem.

Existe algo assim lá fora?

Respostas:

2 para resposta № 1

Mecanismo de aplicativo do Google funciona assim. Ao baixar o kit de ferramentas, você obtém uma cópia local do mecanismo de banco de dados para teste.


1 para resposta № 2

O Grails usa o Hibernate para persistir objetos de domínio e produz um comportamento semelhante ao que você descreve. Para alterar o esquema, você simplesmente modifica o domínio; nesse caso simples, o arquivo é denominado User.groovy.

class User {

String userName
String firstName
String lastName
Date dateCreated
Date lastUpdated

static constraints = {
userName(blank: false, unique: true)
firstName(blank: false)
lastName(blank: false)
}

String toString() {"$lastName, $firstName"}

}

Salvar o arquivo altera o esquema automaticamente. Da mesma forma, se você estiver usando andaimes, ele será atualizado. O processo de protótipo passa a executar o aplicativo, exibe a página no seu navegador, modifica o domínio, atualiza o navegador e vê as alterações.


1 para resposta № 3

Concordo com a abordagem do NHibernate e com a geração automática de banco de dados. Mas, se você quiser evitar escrever um arquivo de configuração e permanecer próximo ao código, use Castle "s ActiveRecord. Você declara o "esquema" diretamente na classe com os atributos via.

[ActiveRecord]
public class User : ActiveRecordBase<User>
{
[PrimaryKey]
public Int32 UserId { get; set; }

[Property]
public String FirstName { get; set; }
}

Há uma variedade de restrições que você pode aplicar(validação, limites etc.) e você pode declarar relacionamentos entre diferentes classes de modelo de dados. A maioria dessas opções são parâmetros adicionados aos atributos. É bem simples.

Então, você está trabalhando com código. Declarando o uso no código. E quando terminar, deixe o ActiveRecord crie o banco de dados.

ActiveRecordStarter.Initialize();
ActiveRecordStarter.CreateSchema();

0 para a resposta № 4

Pode não estar exatamente respondendo ao seu geral pergunta, mas se você usou (N) hibernação então você pode gerar automaticamente o esquema do banco de dados a partir dos arquivos de mapeamento hbm.

Não é feito diretamente do seu código, como você parece querer, mas a geração do Hibernate Schema parece funcionar bem para nós


0 para a resposta № 5

Você deseja o esquema, mas ele foi gerado, ou você realmente deseja SEM esquema?

Para o primeiro, eu iria com nhibernate como@ disse Tom-Carter. Faça com que ele gere seu esquema para você e você esteja bem (pelo menos até você lançar seu aplicativo, veja algo como Tarantino e RedGate SQL Diff ou o que é chamado para gerar scripts de atualização)

Se você quer o último .... O Google App Engine faz isso, como descobri esta tarde, e é muito bom. Se você deseja manter o código sob seu controle, sugiro olhar para o CouchDB, embora seja um pouco de trabalho inicial para configurá-lo. Mas uma vez que você o possui, é um banco de dados totalmente livre de esquemas, 100%. Bem, você tem um ID e uma Versão, mas é isso - o resto é com você. http://incubator.apache.org/couchdb/

Mas pelo que parece (N) o hibernate seria o melhor, mas eu poderia estar errado.


0 para a resposta № 6

Você pode usar um banco de dados de objetos.