Pergunta

Estou criando um aplicativo de desktop em Delphi e plano para usar um banco de dados incorporado. Eu comecei o projeto usando sqlite3 com a biblioteca DISQLite3. Ele funciona, mas a documentação parece um pouco leve. Eu encontrei recentemente Firebird (sim, eu estive fora do Windows por um tempo) e parece ter alguns recursos interessantes e apoio.

Quais são alguns prós e contras de cada db incorporado? O tamanho é importante, bem como apoio e recursos. O que você usou e por quê?

Foi útil?

Solução

Estou usando o SQLite (via DISQLite3) em FeedDemon por vários meses, e eu recomendo-lo - ele tem sido extremamente rápido e estável. Como disse Javier, a documentação para a biblioteca pode ser fina, mas a documentação para SQLite em si são muito bons.

Outras dicas

Eu estou usando Firebird 2.1 embutido e estou muito feliz com it.I como o fato de que o tamanho do banco de dados é praticamente ilimitada (testado com> 4 bancos de dados GB e funciona) e que o arquivo de banco de dados é compatível com o Firebird servidor para que eu possa usar ferramentas padrão para gerenciamento de banco de dados e inspeção. Distribuição consiste em deixar cair alguns arquivos em sua pasta exe.

O acesso simultâneo de vários programas não é suportado, mas o acesso simultâneo de vários segmentos é (contanto que você garantir que apenas uma operação 'connect' está em andamento a qualquer momento).

Eu usei sqlite3 para uma série de projectos (mas a partir de C / C ++ e Objective-C). É extremamente pequeno - nenhuma dependência de qualquer natureza -. Base de dados está em um único arquivo

É o db de escolha para desenvolvedores Mac porque é suportado diretamente pelo CoreData e no iPhone -. Por isso há uma grande base de usuários (para não mencionar todos os outros usuários)

Vamos ver, comparação rápida:

SQLite:

  • tipagem dinâmica no banco de dados
  • arquivos de plataforma cruzada
  • roda em Windows, Linux, Mac, etc.
  • domínio público
  • suporta transações
  • confia na segurança do sistema de arquivos, não inclui própria segurança

Firebird incorporado:

  • tipagem forte no banco de dados
    • nem todos os tipos de dados SQL são suportadas
  • arquivos de plataforma cruzada
    • Firebird incorporado só funciona no Windows
    • Arquivos de Firebird incorporado estão no mesmo formato que a versão completa do servidor
    • Arquivos de Firebird incorporado pode ser copiado para um servidor não-Windows para uso
  • disponível sob uma MPL modificado ( "o que é nosso é nosso e deve permanecer livre, o que é seu é seu e você não tem que liberá-lo")
  • transações suportes, gatilhos, etc.

MySQL incorporado:

  • suporte para SQL apresenta depende formato de arquivo
  • (IIRC) arquivos de plataforma cruzada
  • GPL menos que você pagar royalties
  • roda em Windows, Linux, Mac
  • incrivelmente popular com a multidão de código aberto

bancos de dados Mesmo embarcados têm seus pontos fortes e fracos. Você precisa pesar os pontos fortes e fracos contra o que você está fazendo para decidir.

Eu usei DBISAM de uma série de projetos. É completamente incorporado, mesmo sem a necessidade de uma DLL externa. Ao contrário dos outros que você listou é comercial. Um monte de grandes recursos e ainda muito bem documentado e suportado. A ter uma sucessor a ele que eu não tentei ainda though.

Firebird incorporado é a nossa escolha # 1 porque com nenhuma alteração de código, um usuário único Delphi aplicativo com banco de dados incorporado podem ser migradas para uma implantação baseada em servidor multi-utilizador sem sacrificar qualquer um dos recursos de ponta (como procedimentos armazenados, triggers , vistas, etc). E é um banco de dados livre TRUE e não GPL seu código no processo.

Recomendamos usar AnyDAC ao trabalhar com bancos de dados e Delphi -. Então você pode optar por segmentar FB ou SQLite seamlessingly

A minha preferência seria para FB para aplicativos embarcados. Tom

Eu uso Database Server Advantage da Sybase, mas eu também sou o R & D Manager, então este post é tendenciosa. :)

Temos componentes nativos Delphi TTable e TQuery para Win32 VCL e VCL.NET. acesso à tabela direta, além de suporte SQL faz Advantage único entre muitas das outras ofertas Delphi. Advantage suporta grandes tabelas (limitado apenas pelo número de registros, 2 bilhões de dólares) e tem um motor local gratuito, o que é bom para PCs de desenvolvimento e para pequenos sites de clientes que não exigem funcionalidade de cliente / servidor. Mudar para cliente / servidor com uma única propriedade de conexão, nenhuma outra alteração.

Nós temos uma tonelada de clientes para acessar a parte externa de dados de Delphi também é muito fácil (NET provedor de dados, ODBC, OLE DB, PHP, Perl, JDBC, etc).

página do produto Web Site: http://www.advantagedatabase.com Web Site do desenvolvedor: http://devzone.advantagedatabase.com

É realmente depende do que você precisa. Para aplicações de usuário único, Firebird incorporado ou SQLite são provavelmente melhores escolhas (e preço é justo). No outro extremo, se você precisar de suporte para grande número de vários usuários, você provavelmente deve usar regularmente Firebird em vez da versão incorporado (servidor é simples de instalar, assim você não terá muito problemas aqui).

E se você precisar de algo entre os dois, para uma aplicação multi-user moderada, um dos bancos de dados planas seria melhor. Descobri que Absolute Database de ComponentAce escolha melhor para minhas necessidades do que DBISAM, NexusDB ou VistaDB.

Ele deixa relativamente pequeno footprint (sem DLLs), é um db de arquivo único (uma obrigação para mim), suporte a Unicode, compressão BLOB, crypting e limites técnicos parecem impressionar para um banco de dados plana. Além disso, o apoio era bom em poucas ocasiões em que eu precisava.

Para os contras, tenho notado que não suporta transações aninhadas, mas diferente do que, eu não tinha problemas.

Quanto ao tamanho, nada bate SQLite.

quando você se referir sobre a falta de documentação, eu acho que é doc para DISQLite3. A SQLite docs são bastante completas

Dê uma olhada NexusDB. Têm utilizado com muito sucesso no passado.

O problema com (embutido) firebird é que o banco de dados não podem residir em uma unidade de rede. Além disso, é difícil ter um banco de dados em uma leitura única unidade (CD / DVD).

Para alguns hacks em torno dessas limitações ver o Delphi Wiki: http://delphi.wikia.com/wiki/Firebird_tipps

NexusDB oferece a gama completa de embutido, para a plena cliente / servidor / remoto. Também SQL2003 compatível, eu acredito. Eu estou usando-o em alguns projetos, e estou muito satisfeito até agora, eo fato de que ele pode trabalhar em uma ampla gama de "escalas", como é uma grande vantagem (não ter que aprender outra DB para aplicações em escala-up, etc).

Olhe para esta comparação banco de dados embutido: http://sql-db.cz.cc/ , ele pode ser útil. A maioria dos produtos acima referidos são apresentados lá: Advantage, DBISAM, Firebird, MS SQL Server, e muito mais:. Accuracer, Apollo, ElevateDB, NexusDB, TurboDB

Estou parcial da componente Ace Absolute DB. Embora um produto comercial ($), que é sólida, fácil de usar, compacto e bem documentado. Se você está procurando uma aplicação multi-usuário enorme, este não é o caminho a percorrer, mas se suas necessidades multi-usuário são leves (ou inexistente) esta é uma opção sólida.

Estou usando o SQL Server Express e os componentes ADO. Funciona bem. Você pode executar o SQL Server Express instalar com linha de comando para esconder as complexidades dos usuários. Você também pode distribuir um banco de dados que você carrega por nome de arquivo. Há milhões de usuários do servidor SQL para soluções para os problemas são facilmente encontrados nas intertubes: -)

Eu fiz uma websearch para encontrar um pacote de banco de dados rápido para a minha aplicação Delphi. Eu queria que fosse completamente contido no executável com nenhum DLLs externas ou bibliotecas necessárias. Eu originalmente encontrado Accuracer por AidAim. Eles tinha postado quão rápido seu banco de dados foi e ainda deu comparações com outros pacotes similares para “provar” seu ponto.

Eu queria acreditar suas reivindicações, mas eu pensei que eu iria pesquisar na web um pouco mais para encontrar horários de outros pacotes. Fiquei muito surpreso ao descobrir um post nos fóruns de discussão Delphi onde uma pessoa perguntou o banco de dados para uso, e havia 14 sugestões diferentes. Um dos respondentes tinham feito suas comparações próprio tempo e tinha encontrado Accuracer ser bastante lento em comparação com vários outros, que Accuracer tinha (convenientemente) deixou fora de sua própria página de comparação.

O poste, além de pesquisa de acompanhamento web adicional por mim, levou-me a inclinar-se para DISQLite3 , um produto baseado em o Open Source SQLite programa , mas com melhorias para trabalho na Delphi muito rapidamente, com muito pequena sobrecarga, e com chamadas à base de comando - o que eu gosto. Ele está ativamente em desenvolvimento e em breve terá uma versão oficial Delphi 2009, embora aparentemente a versão atual vai trabalhar sob D2009.

AddEnum:. DISQLite3 versão 2.0.0, lançado 17 Nov suportes D2009

Eu sei Acesso MS é um db comparativamente porcaria (e esperar para ser abatido em chamas aqui), mas se é apenas necessário dados pequena que pode ter vantagens, se o MS Office é usado de qualquer maneira. Para mim, foi uma maneira de dados do programa loja com mais flexibilidade do que arquivos CSV, que é uma abordagem comum para o código científico.

Você pode criar um db de acesso a partir do código delphi sem ter MS Office instalado usando ado & driver ODBC (pode ser necesary ter um arquivo .accdb inicial sem tabelas para copiar de seguida, preencher, eu não consigo me lembrar desse detalhe. Não certeza situação de licenciamento fazer isso.

A extensão .accdb pode ser alterado para algo mais e a senha do arquivo protegido (de forma limitada) por isso não é imediatamente óbvio para os usuários seu acesso se isso é desejado. Eu sei que alguns desenvolvedores comerciais fazer este método e copiado por mim mesmo. Achei mais fácil de configurar do que sqlite, mas talvez porque eu já tinha usado ado & acesso no passado.

Se incorporado é uma necessidade absoluta, olhada DBISAM.

kbMemTable é um bom candidato. É executado em memória, rápido, multi-threadding. Utilizado para ser livre.

Components4Developers

Eu usei DBISAM e kbMemTable em diferentes ocasiões.

O que eu gosto sobre DBISAM é que ele tem grandes recursos, e geralmente é muito confiável. Eu usei-o em grandes bancos de dados, pesquisa de texto completo, o modo somente leitura, CGIs e muitas outras situações.

É bastante grande em comparação com componentes baseados kbMemTable ou SQLite, no entanto. E você não pode ter um único arquivo por banco de dados (ou mesmo mesa.) - dependendo da situação, que é uma grande desvantagem

kbMemTable é pequena e é ótimo para pequenas quantidades de dados. Uma vez que é executado na memória, ele tem que ser uma pequena quantidade de dados, é claro.

Uma outra opção que eu tomei em um par de meus aplicativos de desktop está despejando os dados diretamente de / para a minha hierarquia de objetos usando TWriter / TReader. Esta é de longe que menor opção, e é absurdamente rápido em comparação ao uso de um banco de dados. Os arquivos de dados são minúsculos, também.

Ele tem todos os tipos de inconvenientes, embora - você tem que código de versões em se você pode querer sempre adicionar / modificar campos, a menos que seja em memória é complicado ainda mais, não há suporte multi-usuário em tudo, etc.

Firebird incorporado é a nossa escolha # 1 também. Ea suíte Unificação v2.0 Interbase com ele. Um grande e estável solução!

Eu tenho usado ScimoreDB. Ele tem suas peculiaridades como eles dão-lo Royalty livre e tem suas peculiaridades em tipos de dados e com alguns problemas de instalação. Este foi em um projeto C #.

Firebird todo o caminho. Faz muito bem tudo e até agora a versão 2.1 é muito sólida.

FireBird oferece a oportunidade de escalar até multi-usuários em algum momento para baixo da linha, ou se precisar de concorrência (se o aplicativo vai multi-threaded).

SQLite é bastante inigualável se você só precisa de acesso de usuário único, nenhum outro banco de dados vem próximo a ele em qualquer aspecto, seja de desempenho, conveniência, suporte SQL ou estabilidade.

Firebird é realmente impressionante e tem uma pegada pequena para que possa utilizar incorporado e ele pode ser escalado para cima para muitos usuários e faz unicode faily bem Eu uso componentes devart com Delphi 2009 e FIB vantagem para delphi 6/7 (sua versão para 2009 e unicode não está pronto ainda muito ruim)

Hmmm, ninguém recomendou a BDE - Eu me pergunto por que é; -)

BlackFishSQL é outra possibilidade, embora eu não tenha testado a fundo ainda.

I tem uma base de dados que tem para gravar dados de campo 5 para cada 20 seg durante 10 dias .. 3 campo são inteiros, um campo é duplo (tempo) e um campo é cadeia [5].

Ainda estou usando Delphi6 srv2 por causa dos meus componentes. Novas versões Delphi são terríveis em componentes que eu tenho que gastar milhares de dólares de dinheiro para reconstruir a minha biblioteca de componentes. Mesmos delphi 6 ainda é melhor para aplicações commertial reais, que nunca versão do Delphinus dão muitos problemas. Em muitos pontos, como leituras USB ou comport assim por diante ... eles liberam os mais novos antes de versões anteriores não sentar-se no mercado.

Tenho a configuração de um código com Delphi6 o que acrescenta 43200 registros em uma mesa para teste porque eu vou implantar a tabela no aplicativo enquanto ele tem 43200 registros. Vou mostrado todos os dados sobre DBChart.

O resultado do teste é inferior a bases de dados preenchidos nas mesas de comando de inserção com 43200 registros

DBISAM = 34 sec,
ElevateDb = 11 sec,
AbsoluteDB = 45 seg,
SqlLite = 32 hora, Firebird = 12 min,
MSSQL12 LocalDB = 28 hora, mesa fácil = 8 hora, BDE = Bloqueado,

Eu ainda não testado Oracle, blackfish, Sysbase, nexsusDb etc .. mas parece que eles vão também muito lento. Eu ligado com DBChart e apenas elevateDb e absoluteDB foi carregado 43200 registos em DBchart em tempo exceptable tal como 7 ~ 10 segundos. Outras minutos todos tomadas. Assim, os bancos de dados mais lentas sempre precisa de codificação truques para ter sucesso em alguns postos de trabalho reais ..

Eu testei sua velocidade de pesquisa, bem por localizar comando que infelizmente os bancos de dados baseado em servidor são sempre mais lento em.

MSSQL e SQLLite3 são extremamente difíceis de gerir no delphi que me deixou muito cansado.

Estes são os meus resultados dos testes
No final, eu decidi usar AbsoluteDB, DBISAM e elevar. Eu joguei o resto fora do PC.

função de suporte does not software Elevate recno que requer códigos extras em tempo de execução para gerenciar. Isso faz com que o banco de dados mais lenta Outro bug é com software Elevate é AutoInc campos. Não há nenhuma maneira para redefini-la. Portanto, eu não escolheu o software ELEVAT mesmo é o banco de dados mais rápida. Eles dizem muitas funções boas, mas quantos deles podemos usá-lo de fato. Eles só deixaram as funções mais importantes não suportado, mas fixa muitas muitas funções desnecessárias. e parece desde 8 anos não há qualquer vantagem também.

Se você quer ver com seus próprios pls olho apenas tentar e ver ..

Estou pensando entre dois agora absoluta DB ou DBisam4

quando se trata de bancos de dados incorporados a primeira pergunta é: é multiusuário? Na verdade, quem precisa de um banco de dados que não permite múltiplas conexões (leia e escrever) a ele? Eu tentei (intensly) todos os bancos de dados mencionados e encontraram apenas um que realmente funciona da maneira que deveria. E isso é Accuracer. A pena só com Accuracer é que a sua banda de um homem a três e crônica falta de suporte adequado. Também é principalmente estática em desenvolvimento como vimos há características reais em years.Not surpreendente uma vez que apenas uma pessoa realmente desenvolve-lo. Parece que eles estão vivendo na fama de idade. Usuários elogiar refletir que (os comentários geralmente 10 anos). Para uma única experiência do usuário Eu recomendaria Absolute Database. Quanto aos principais jogadores Eu recomendaria SQL Server da Microsoft. A Oracle se tornou um bloatware e está morrendo lentamente para fora.

ps o que é bom em Accuracer é que as suas funções de banco de dados incorporados apenas como servidor desenvolvido. Ele bloqueia único registro atual, se a sua utilização em enquanto as funções de descanso normalmente. banco de dados de Nice. Pity só ele está estagnado.

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