Banco com TXT é possivel?

12 respostas
banger

fala rapaziada tudo em riba?!

galera eu tenho uma aplicação que hj usa o mysql, mas o pessoal aqui da empresa não quer a intalação de nada na maquina do cliente, só o necessario, entaum eu lembrei do txt que é flexivel e eu posso mudar seu conteudo sem problema, mas eu não manjo como fazer isso, que metodos eu posso usar e tals.

eu tava pensando no seguinte : usar um limitador dentro do txt, para separar as colunas e poder montar em uma tabela no sistema tipo:

/*dentro do txt*/
;azul;macaco;bicicleta; //três colunas, o limitador é o ponto-e-virgula

. tem algum metodo que eu possa utilizar pra esta função???ou tem que construir na mão mesmo???

12 Respostas

ViniGodoy

No mínimo o seu sistema será instalado na máquina do cliente.

Você pode usar um banco embarcável como o HSQLDB: http://hsqldb.org/

Ele não precisa de um “servidor instalado”. E te fornece uma API que controla, ela mesmo, o banco de dados. Sem instalação, sem nada.
E com suporte a SQL, índices e quase tudo que um BD tem de bom.

ViniGodoy

Só um detalhe. Seria possível, sim, fazer com .txt. Mas:

  1. Você perde a possibilidade de usar SQL para buscas e o poder de indexação dos BDs. Nesse caso, talvez você precise de uma API superior para fazer buscas em objetos;
  2. Seus bancos ficam enormes, já que dados numéricos, por exemplo, são codificados de maneira estúpida;
  3. Você geralmente perde precisão em campos de ponto flutuante;
  4. Os arquivos são difíceis de manipular e geralmente exigem que sejam carregados em memória.
davidbuzatto

Vc pode usar um banco de dados embarcado, como o Apache Derby (Java DB).
Vc tem a opção de rodar o Derby como um servidor remoto tbm caso haja necessidade de várias máquinas cliente utilizar a mesma base (que faltamente uma hora vai acontecer).
O melhor é que você só precisa distribuir os .jar do derby junto com a sua aplicação.

http://db.apache.org/derby/

[]´s

davidbuzatto

Ops, atrasei na resposta :smiley:
Não dei refresh aqui antes de postar.

O HSQLDB que o Viny disse é uma alternativa tbm.

[]´s

banger

hum

entaum e que no caso eu so precise apresentar infos mesmo, sem qualquer tipo de alteração que possa ser feita pelo cliente, só informativo mesmo. mas se for possivel executar direto na aplicação sem instalar blz tmbm serve, pq o que está em questão é que se for instalar banco na maquina do cliente pode acontecer de apagar a base do cliente.

banger

ViniGodoy:
Só um detalhe. Seria possível, sim, fazer com .txt. Mas:

  1. Você perde a possibilidade de usar SQL para buscas e o poder de indexação dos BDs. Nesse caso, talvez você precise de uma API superior para fazer buscas em objetos;
  2. Seus bancos ficam enormes, já que dados numéricos, por exemplo, são codificados de maneira estúpida;
  3. Você geralmente perde precisão em campos de ponto flutuante;
  4. Os arquivos são difíceis de manipular e geralmente exigem que sejam carregados em memória.
banger

entaum essas ferramentas não apagam o banco já exestente da maquina do cliente???

ViniGodoy

Nenhuma ferramenta faz isso. Aliás, de onde você tirou que esse risco sequer existe? Você só vai apagar o banco do cliente se sua aplicação mandar apaga-lo.

romarcio

Cria o banco no HSQLDB como sugeriu o Vini. Depois gera um arquivo de exportação do banco Mysql, nesse arquivo vai ter os inserts junto.

Pega esses inserts e insere eles no seu novo banco, no caso o HSQLDB.

Tchello

banger:
hum

entaum e que no caso eu so precise apresentar infos mesmo, sem qualquer tipo de alteração que possa ser feita pelo cliente, só informativo mesmo. mas se for possivel executar direto na aplicação sem instalar blz tmbm serve, pq o que está em questão é que se for instalar banco na maquina do cliente pode acontecer de apagar a base do cliente.

Bom, se forem só algumas informações de configuração, talvez um arquivo properties seja o caso.
Daí basta manipula-lo pela famigerada HashTable ou um Properties (pesquise-os).

Agora se você precisar mesmo de uma unidade persistente e não poder instalar nada, recomendo veementemente o HSQLDB.
As outras opções são boas pedidas também, Derby, JavaDB, etc…

banger

entaum e que a chefia aqui e velha e tinha uma ferramenta de banco de dados que na epoca ele utilizava, num me lembro o nome agora, que foi feito um .nsi junto do intalador do banco, mas o cliente jah tinha uma base de dados no pc dele, ai a ferramenta apagou a basa dele e reinstalou o software com um base zerada e com confg padrao, agora vc imagina a kara do sujeito quandfo viu que o programa apagou o banco dele, a sorte que deu pra recuperar, auahuauhauhauhuahuha, mas blz vou buscar as duas ferramentas que vcs me passaram, dar uma lida e ver se consigo argumentar com ele…

peczenyj

Ao meu ver, tudo é possivel dependendo do propósito.

Se eu quero guardar umas poucas informações e altera-las muito pouco (ou mesmo não altera-las) posso pensar em quardar em arquivos texto. É comum em jogos, vc ter uma pasta cheio de TXTs com aqueles textos que passam entre uma fase e outra.

Mas se eu vou ter muito acesso e, principalmente, situações de concorrência, eu pensaria duas vezes. Eu teria que me preocupar MUITO com I/O e isto é um gargalo sério. Para que eu vou desenvolver uma forma de armazenar estruturas de dados em arquivos pensando em como recuperar, alterar, deletar, inserir e até coisas mais complexas como transações (se for o caso) se eu posso usar algo pronto, pequeno, gratuito e bem testado? Se eu posso usar um banco de dados simples como um sqlite ou HSQLDB, eu fico livre para pensar na minha aplicação. Para mim pode ser a mesma coisa que querer fazer o seu próprio servidor web.

Portanto pense bem. Fazer o seu proprio DB pode sair caro no longo prazo.

Criado 16 de agosto de 2010
Ultima resposta 16 de ago. de 2010
Respostas 12
Participantes 6