Pergunta

Eu estou tentando atualizar um aplicativo legado que faz todo o seu armazenamento de dados em um sistema de juntas cortado de arquivos BDE Paradox. O programa funciona muito bem, sob certas condições estreitas, mas tem problemas de desempenho graves.

Eu gostaria de tentar melhorar as coisas, atualizando a um sistema de banco de dados melhor. O que eu preciso é um banco de dados local, de preferência aquela em que posso armazenar a coisa toda em um arquivo em vez do actual sistema "um ou mais arquivos por tabela". Tem que apoiar relacionamentos de chave estrangeira e indexação mesa, e ele tem que ser capaz de retornar um resultado rapidamente a partir de uma consulta de uma tabela com centenas de milhares de elementos.

Este último é importante. O sistema atual é indexado, mas isso não parece importar muito. Todas as consultas parecem correr em tempo O (N), onde N é o tamanho total da tabela, e torna-se terrivelmente lento quando as mesas começam a ficar grande. Eu não sou realmente certo porque, mas que tem de ir embora.

E tem que trabalhar sob D2009 e posteriores. Alguém pode fornecer algumas recomendações?

Foi útil?

Solução

Outro voto aqui para Firebird incorporado (e Firebird em geral)!

Eu tive apenas um incrível experiência portar um aplicativo 6.0 Interbase para incorporado Firebird 1.5; depois de um curto período de tempo lendo os documentos, a conversão real levou literalmente 20 minutos e agora o meu aplicativo é executado feliz no Vista e Windows 7. Se você não precisa de suporte multi-usuário, então eu olhar seriamente Firebird incorporado (e se você fazer suporte multi-usuário precisa, então porque não olhar para Firebird regular de qualquer maneira).

É um arquivo único para o db e um par de pequenas DLLs para o motor, e é fácil de implantar, manter e backup. Há um sem número de ferramentas para ajudar durante o desenvolvimento e o apoio técnico na comunidade Delphi para IB e Firebird é de segunda a nenhum deles.

O suporte SQL é excelente, com restrições, triggers e procedimentos armazenados (temos também UDFs para ajudar a aumentar a língua -. DLLs que podem ser escritos em Delphi e usados ??como funções em linha etc em seu banco de dados muito rápido, muito flexível ).

Seu ponto final sobre o desempenho - bem Interbase sempre foi muito mal-humorado de qualquer maneira, e minha experiência com Firebird incorporado até agora é que ele 'gritos' -. Muito, muito impressionado

Outras dicas

Eu usei esse SQLite Wrapper com bom sucesso sob D2009. Eu tinha instalado e funcionando em questão de minutos. Tem indexação e sobrecarga muito baixa. (Este é gratuito e você não precisa de mais nada além do SQLite DLL)

Há também um invólucro SQLite comercial de Delphi Inspiração eo site diz que eles têm um livre para licença de uso não-comercial e educacional, bem. Eu não usei esse.

Eu também usei o Firebird incorporado, mas então você também precisa ter componentes de conectividade para falar com ele. Eu tenho IBObjects e é isso que eu uso para o servidor e versões embutidas. Eu tentei outros componentes de banco de dados Firebird livres, mas realmente não encontrei nenhuma que eu gosto ou que eu me senti confiante em.

[EDIT]
Como a maioria das pessoas estão sugerindo Firebird, aqui estão alguns componentes de conectividade para Firebird que eu tentei no passado ou que eu ouvi falar:

Mercury Database Objects - Livre / Opensource
IBObjects - Comercial (Eu comprei isso mesmo)
FIBPlus -
Commercial Firebirds ODBC driver - Livre / Opensource
ZeosLib - Livre / Opensource

Concorrência?

Eu usei SQLite em um projeto (não-Delphi) e foi muito feliz com isso.

Caso contrário, eu acho que o DBMS de arquivo único embutidos de escolha para Delphi parece ser Firebird.

Tente banco de dados Advantage, oferecido pela Sybase (comprado de Extended Systems)

http://marketing.ianywhere.com/forms/ADS91-30-Day

É livre se você não precisa de cliente / servidor ou funcionalidade internet.

A desvantagem é que não é 100% VCL, de modo que o VCL incluído estaticamente links para DLLs.

Se o aplicativo já precisa de escala, você não terá a bases de dados de mudança novamente.

Eu recomendaria usar o PostgreSQL como banco de dados, podemos usá-lo em todos os projetos que nós trabalhamos e testei com mais de 4 milhões de discos em uma mesa e funcionou muito bem.

Outra opção seria usar ADO e um banco de dados Microsoft Access. A única desvantagem é que o usuário tem que ter o motor Jet e MDAC instalado ... o que a maioria das máquinas fazem. A vantagem disso é que ele faz upsizing para MSSQL fácil. Basta alterar a seqüência de conexão para apontar para o banco de dados SQL Server, e fazer algumas mudanças de consulta menor.

Eu usei NexusDB por anos e é um pequeno, confiável , base de dados flexível. Está escrito em Delphi, vem com código fonte completo e pode ser compilado completamente em sua aplicação (sem DLLs para distribuir) ou executar como um sistema cliente-servidor.

É difícil saber se ele vai atender às suas necessidades de desempenho, mas eu não tive um problema com meu desempenho de consulta SQL desde que eu era indexar os campos corretos. É um um arquivo por produto mesa, mas não deixe que você parar de tomar um olhar.

É um produto comercial, mas eles oferecem uma única versão DCU que só pode ser usado em um único usuário / aplicações embarcadas para livre.

Eu estou trabalhando em terminar uma conversão de uma grande aplicação que usou BDE / Paradox para um banco de dados local e Oracle 8i para um db remoto.

Eu estou usando UniDAC de DevArt. Isso permite-me um único conjunto de componentes (completamente livre do velho BDE), que pode bater MSSQLServer como um db local e continuar a bater Oracle como meu controle remoto. Eu tenho a perspectiva de ser capaz de mudar as bases de dados em ambas as extremidades muito mais facilmente agora, apenas mudando os fornecedores.

Eu gosto desta abordagem, e os componentes parecem ser bastante bem feito.

Jay (D2007)

O PostgreSQL é muito bom, mas é uma maquinaria pesada é mais perto de oráculo que você possa fazer aplicativos muito pesados, mas um pouco de uma dor para manter

Firebird é fantástico incorporado ou não para conectividade em 2009 você pode usar FIB além de devrace.com eles têm uma versão de avaliação que apenas mostrar uma tela nag assim, se não um aplicativo comercial que é ok.

else se é um aplicativo comercial que você pode passar a 300 $ e comprá-lo, eu usei também componentes devart para InterBase / Firebird e eles são muito bom se você quiser uso livre zeos mas você começa o que você paga http://sourceforge.net/projects/zeoslib/ Lite SQL não é um único arquivo e se ele é multi usuário, ele suga

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