Sou uma espécie de administrador de um OODBMS de administração zero, mas principalmente faço programação.
Lembro-me de ter lido anos atrás sobre algum banco de dados SQL que tinha um conceito de algo como uma transação permanente. Pode ter sido Sybase. De qualquer forma, o que era essa "coisa", era como uma transação que você inicia e persiste entre as conexões, e dentro da qual você pode executar transações "normais". Basicamente, deu a você uma "visão" desse banco de dados que poderia divergir do banco de dados principal, mas rodando no mesmo servidor e, portanto, compartilhando a maior parte do recurso em vez de ter seu "próprio" servidor. Espero que você entenda o que quero dizer agora.
De qualquer forma, como é chamado esse tipo de coisa e ainda está disponível em bancos de dados modernos. Em particular, existe algum banco de dados NoSQL distribuído sofisticado que pode fazer isso?
A razão pela qual estou perguntando é porque eu poderia usar algo assim para executar a preparação da próxima versão do meu software no banco de dados principal, poupando-me da necessidade de ter um sistema de preparação tão poderoso quanto o principal, e o problema/largura de banda de sincronizar as mudanças do principal para o teste. Eu apenas iniciaria a "transação permanente", testaria o novo software por alguns dias, possivelmente permitindo que alguns usuários tivessem uma prévia e descartasse as alterações quando terminasse. Então eu faço a implantação real e inicio uma nova "transação permanente" para a próxima versão...
NB: Não pude colocar tags significativas porque é meu primeiro post e não tenho o direito de inventar tags, e não havia nada como "persistente", ou "permanente" ou mesmo "de longa duração" ...
Eu sei mais ou menos o que você quer dizer, fazemos isso no armazenamento usando NetApp FlexClones . Um FlexClone "se parece" com uma cópia de um sistema de arquivos, mas os blocos subjacentes nos discos são copy-on-write, então o único espaço que ele realmente ocupa é o das mudanças que você faz.
No entanto, o clone não é um fluxo de alterações, como um redo log. A maneira como o NetApp funciona é que cada bloco que você vê no nível do sistema de arquivos é, na verdade, apenas um ponteiro para um bloco no armazenamento "real". A criação de um FlexClone é apenas uma questão de copiar a lista de ponteiros, portanto é uma operação muito leve. Quando você altera um bloco em um FlexClone, o ponteiro é movido para um novo bloco e o original é copiado; Isso tem duas implicações interessantes:
Normalmente, colocaríamos o primário no modo hotbackup (para Oracle, mas como está no armazenamento, funcionará com qualquer banco de dados que tenha um modo equivalente), FlexClone o armazenamento, monte o clone com NFS no servidor de teste (muito menor), em seguida, crie um novo arquivo de controle, recupere o banco de dados dos redo logs arquivados conforme necessário e abra-o com
resetlogs
. Permitimos uma "reserva de snap" de 10% por padrão (ou seja, você pode alterar até 10% do clone), mas isso é totalmente configurável - você pode torná-lo 100% e fazer uma "divisão" que cria uma cópia independente também. Essa tecnologia (com alguns scripts de shell inteligentes) reduziu a criação de ambientes de teste de mais de 3 dias para questão de minutos em meu site. Sou um grande fã.Acho que você está procurando um conjunto de dados desconectado. Isso complica o gerenciamento de transações, pois você não pode manter os bloqueios do banco de dados.
Os drivers JDBC permitem que um conjunto de dados seja desconectado do banco de dados.