Banco de dados embutido - Embedded database

Um sistema de banco de dados embutido é um sistema de gerenciamento de banco de dados (DBMS) que está totalmente integrado a um software aplicativo ; ele está "embutido no aplicativo". Na verdade, é uma ampla categoria de tecnologia que inclui

O termo banco de dados incorporado pode ser confuso porque apenas um pequeno subconjunto de produtos de banco de dados incorporado é usado em sistemas incorporados em tempo real , como comutadores de telecomunicações e dispositivos eletrônicos de consumo . (Consulte o banco de dados móvel para bancos de dados de pegadas pequenas que podem ser usados ​​em dispositivos incorporados.)

Implementações

Os principais produtos de banco de dados incorporados incluem, em ordem alfabética:

Comparações de mecanismos de armazenamento de banco de dados

Servidor de banco de dados Advantage

O Advantage Database Server (ADS) da Sybase é um sistema de gerenciamento de banco de dados integrado com recursos completos. Ele fornece acesso a dados ISAM e relacionais e é compatível com várias plataformas, incluindo Windows, Linux e Netware. Ele está disponível como um banco de dados de servidor de arquivos local livre de royalties ou uma versão cliente-servidor completa. O ADS existe há muitos anos e é altamente escalonável, sem administração e com suporte para uma variedade de IDEs, incluindo .NET Framework (.NET), Object Pascal (Delphi), Visual FoxPro (FoxPro), PHP , Visual Basic ( VB), Visual Objects (VO), Vulcan , Clipper , Perl , Java , xHarbour , etc.

Apache Derby

Derby é um mecanismo SQL incorporável escrito inteiramente em Java. Totalmente transacional, multiusuário com um subconjunto SQL decente, o Derby é um mecanismo maduro e disponível gratuitamente sob a licença Apache e é mantido ativamente. Página do projeto Derby . Ele também é distribuído como parte do Java SE Development Kit (JDK) da Oracle com o nome de Java DB.

Empress Embedded Database

A Empress Software, Inc., desenvolvedora do Empress Embedded Database , é uma empresa privada fundada em 1979. O Empress Embedded Database é um banco de dados relacional de funções completas que foi integrado em aplicativos por organizações de pequeno a grande porte, com ambientes de implantação incluindo médicos sistemas, roteadores de rede, monitores de usinas nucleares, sistemas de gerenciamento de satélite e outras aplicações de sistema embarcado que requerem confiabilidade e energia. O Empress é um mecanismo de banco de dados SQL compatível com ACID com C, C ++ , Java, JDBC , ODBC, SQL , ADO.NET e APIs de nível de kernel . Os aplicativos desenvolvidos com essas APIs podem ser executados em modos autônomo e / ou de servidor. O Empress Embedded Database é executado em Linux, Unix , Microsoft Windows e sistemas operacionais em tempo real .

Mecanismo de armazenamento extensível

ESE é uma tecnologia de armazenamento de dados do Método de Acesso Sequencial Indexado (ISAM) da Microsoft. ESE é notavelmente um núcleo do Microsoft Exchange Server e Active Directory. Seu objetivo é permitir que os aplicativos armazenem e recuperem dados por meio de acesso indexado e sequencial. O Windows Mail e o Desktop Search no sistema operacional Windows Vista também usam o ESE para armazenar índices e informações de propriedade, respectivamente.

eXtremeDB

A McObject LLC lançou o eXtremeDB como o primeiro banco de dados embutido na memória projetado do zero para sistemas embutidos em tempo real. O produto inicial logo foi adicionado pelo eXtremeDB High Availability (HA) para aplicativos tolerantes a falhas . A família de produtos agora inclui edições de 64 bits e de registro de transações , e o híbrido eXtremeDB Fusion, que combina armazenamento de dados em memória e em disco. Em 2008, a McObject introduziu o eXtremeDB Kernel Mode, o primeiro DBMS integrado projetado para ser executado em um kernel de sistema operacional . Hoje, o eXtremeDB é usado em milhões de sistemas integrados e em tempo real em todo o mundo. McObject também oferece Prest , um banco de dados embutido orientado a objeto de código aberto para Java, Java ME , .NET, .NET Compact Framework e Silverlight .

Firebird Embedded

Firebird Embedded é um mecanismo de banco de dados relacional. É um fork de código aberto do InterBase, é compatível com ACID , suporta triggers e stored procedures e está disponível em sistemas Linux, OSX e Windows. Possui as mesmas características da versão clássica e superservidor do Firebird, duas ou mais threads (e aplicações) podem acessar o mesmo banco de dados ao mesmo tempo a partir do Firebird 2.5. Assim, o Firebird embarcado atua como um servidor local para um cliente thread acessando seus bancos de dados (isso significa que funciona corretamente para aplicativos da web ASP.NET, porque lá, cada usuário tem seu próprio thread, o que significa que dois usuários podem acessar o mesmo banco de dados ao mesmo tempo, mas eles não estariam no mesmo encadeamento, porque o ASP.NET abre um novo encadeamento para cada usuário). Ele exporta os pontos de entrada padrão da API Firebird. A principal vantagem dos bancos de dados embarcados Firebird é que, ao contrário dos bancos de dados SQlite ou Access, eles podem ser plugados em um servidor Firebird completo sem nenhuma modificação também é multiplataforma (roda em Linux, OS X com suporte completo para ASP.NET Mono)


H2

Escrito em Java, mecanismo de banco de dados de código aberto muito rápido. Os modos Embedded e Server, suporte a clustering, podem ser executados dentro do Google App Engine . Oferece suporte a arquivos de banco de dados criptografados (AES ou XTEA). O desenvolvimento do H2 foi iniciado em maio de 2004, mas foi publicado pela primeira vez em 14 de dezembro de 2005. H2 tem licença dupla e está disponível sob uma versão modificada do MPL 1.1 (Mozilla Public License) ou sob o (não modificado) EPL 1.0 (Eclipse Licença Pública).

HailDB, anteriormente Embedded InnoDB

HailDB é uma forma independente e incorporável do InnoDB Storage Engine. Dado que o HailDB é baseado na mesma base de código que o InnoDB Storage Engine, ele contém muitos dos mesmos recursos: alto desempenho e escalabilidade, controle de simultaneidade multiversão (MVCC), bloqueio em nível de linha, detecção de deadlock, tolerância a falhas, travamento automático recuperação, etc. No entanto, como o mecanismo embarcado é completamente independente do MySQL, faltam componentes de servidor, como rede, permissões de nível de objeto, etc. Ao eliminar a sobrecarga do servidor MySQL, o InnoDB ocupa pouco espaço e é adequado para incorporação em aplicativos que exigem alto desempenho e simultaneidade. Como acontece com a maioria dos sistemas de banco de dados embutidos, o HailDB é projetado para ser acessado principalmente com uma API C semelhante ao ISAM em vez de SQL (embora uma variante SQL extremamente rudimentar seja suportada).

O projeto não é mais mantido.

HSQLDB

HSQLDB é um sistema de gerenciamento de banco de dados relacional de código aberto com uma licença do tipo BSD que é executado na mesma Java Virtual Machine que o aplicativo incorporado. HSQLDB oferece suporte a uma variedade de modos de tabela em memória e baseados em disco, Unicode e SQL: 2016.

InfinityDB

InfinityDB Embedded Java DBMS é um armazenamento de chave / valor hierárquico classificado. Agora tem uma edição criptografada e uma edição cliente / servidor. A velocidade multi-core é patenteada. O InfinityDB é seguro, transacional, compactador e robusto, em um único arquivo para instalação instantânea e administração zero. As APIs incluem o simples e rápido 'ItemSpace', uma visualização ConcurrentNavigableMap e JSON. Um RemoteItemSpace pode redirecionar de forma transparente as APIs incorporadas para outras instâncias de banco de dados. Cliente / servidor inclui um servidor Servlet leve, administrador da web e navegação de banco de dados e REST para python.

Informix Dynamic Server

O Informix Dynamic Server (IDS) é caracterizado como um servidor de banco de dados embutido de classe empresarial , combinando recursos embutidos, como baixa pegada, recursos programáveis ​​e autônomos com recursos de banco de dados de classe empresarial, como alta disponibilidade e recursos de replicação flexível. O IDS é usado em cenários profundamente integrados, como sistemas de processamento de chamadas de telefonia IP, aplicativos de ponto de venda e sistemas de processamento de transações financeiras.

InterBase

O InterBase é uma plataforma de banco de dados SQL compatível com Unicode e multi-plataforma vencedora do IoT Award, capaz de ser incorporada em aplicativos prontos para uso. Suporte SMP pronto para uso e criptografia de 256 bits em disco AES, conformidade com SQL 92 e ACID e suporte para plataformas Windows, Macintosh, Linux, Solaris, iOS e Android. Ideal para empresas de pequeno a médio e grande porte, que oferecem suporte a centenas de usuários e ao desenvolvimento de aplicativos móveis. O InterBase Light é uma versão gratuita que pode ser usada em qualquer dispositivo móvel e é ideal para aplicações móveis. As empresas podem mudar para uma versão paga à medida que aumentam os requisitos de gerenciamento de mudanças e segurança. O InterBase tem alta adoção nas indústrias de defesa, espaço aéreo, petróleo e gás e manufatura.

LevelDB

LevelDB é um armazenamento de chave / valor ordenado criado pelo Google como uma implementação leve do design de armazenamento Bigtable . Como uma biblioteca (que é a única maneira de usar LevelDB), sua API nativa é C ++. Também inclui wrappers C oficiais para a maioria das funcionalidades. Existem wrappers de API de terceiros para Python , PHP , Go ( a implementação pura Go LevelDB existe, mas ainda está em andamento), Node.js e Objective C. O Google distribui LevelDB sob a nova licença BSD .

LMDB

O Lightning Memory-Mapped Database (LMDB) é um banco de dados de valor-chave mapeado na memória para o projeto OpenLDAP . Ele é escrito em C e a API é modelada após a API Berkeley DB , embora muito simplificada. A biblioteca é extremamente compacta, compilando até 40 KB de código de objeto x86, sendo geralmente mais rápida do que bibliotecas semelhantes como Berkeley DB , LevelDB , etc. A biblioteca implementa árvores B + com controle de simultaneidade multiversão (MVCC), armazenamento de nível único , cópia na gravação e fornece transações ACID completas sem deadlocks. A biblioteca é otimizada para alta simultaneidade de leitura; os leitores não precisam de bloqueios. Os leitores não bloqueiam os escritores e os escritores não bloqueiam os leitores, portanto, o desempenho de leitura tem escalas perfeitamente lineares em muitos threads e CPUs arbitrariamente. Wrappers de terceiros existem para C ++ , Erlang e Python . O LMDB é distribuído pelo Projeto OpenLDAP sob a Licença Pública OpenLDAP. A partir de 2013, o Projeto OpenLDAP está descontinuando o uso do Berkeley DB, em favor do LMDB.

Mimer SQL

Uma versão incorporada de manutenção zero do banco de dados SQL proprietário Mimer está disponível.

Biblioteca do servidor incorporado MySQL

A Embedded MySQL Server Library fornece a maioria dos recursos do MySQL regular como uma biblioteca vinculável que pode ser executada no contexto de um processo cliente. Após a inicialização, os clientes podem usar as mesmas chamadas de API C de quando falam com um servidor MySQL separado, mas com menos sobrecarga de comunicação e sem a necessidade de um processo de banco de dados separado.

NexusDB

NexusDB é o sucessor comercial do banco de dados FlashFiler, que agora é open source. Ambos podem ser embutidos em aplicativos Delphi para criar executáveis ​​autônomos com funcionalidade completa de banco de dados.

Oracle Berkeley DB

Como o nome indica, o banco de dados integrado da Oracle é, na verdade, Berkeley DB , que a Oracle adquiriu da Sleepycat Software. Ele foi originalmente desenvolvido na Universidade da Califórnia. Berkeley DB é um banco de dados embutido de código aberto rápido e é usado em vários produtos de código aberto bem conhecidos, incluindo os sistemas operacionais Linux e BSD Unix, servidor Web Apache, suíte de produtividade OpenOffice. No entanto, nos últimos anos, muitos projetos bem conhecidos passaram a usar o LMDB , porque superou o Berkeley DB em cenários-chave com base no design " menos é mais ", também devido à mudança de licença.

Raima Database Manager

Raima Database Manager , produzido pela Raima . De acordo com a definição de Raima, o produto está embutido em dois sentidos: primeiro, ele está embutido em um aplicativo, tornando-se uma extensão do aplicativo, e, segundo, é possível usá-lo em um computador / sistema operacional embutido ou em ambientes de tempo real devido a sua pequena pegada e operação eficiente. Suas APIs (para C / C ++, SQL, JDBC, ODBC, ADO.NET e RESTful) foram projetadas para suportar os recursos limitados de ambientes integrados.

RocksDB

O RocksDB, criado no Facebook , começou como um fork do LevelDB . Ele se concentra no desempenho, especialmente em SSDs . Ele adiciona muitos recursos, incluindo transações , backups , instantâneos , filtros de flor , famílias de colunas , expiração, operadores de mesclagem personalizados, compactação mais ajustável, coleta de estatísticas e indexação geoespacial. Ele é usado como um mecanismo de armazenamento dentro de vários outros bancos de dados, incluindo ArangoDB , Ceph , CockroachDB , MongoRocks, MyRocks , Rocksandra e TiKV.

solidDB

solidDB é um banco de dados relacional híbrido em disco / em memória e geralmente é usado como um banco de dados de sistema integrado em equipamentos de telecomunicações, software de rede e sistemas semelhantes. A tecnologia de banco de dados in-memory é usada para atingir o rendimento de dezenas de milhares de transações por segundo com tempos de resposta medidos em microssegundos. A opção de alta disponibilidade mantém duas cópias dos dados sincronizados o tempo todo. Em caso de falha do sistema, os aplicativos podem recuperar o acesso ao solidDB em menos de um segundo sem perda de dados.

SQLite

SQLite é uma biblioteca de software que implementa um mecanismo de banco de dados SQL transacional independente, sem servidor e com configuração zero. SQLite é o mecanismo de banco de dados SQL mais amplamente implantado no mundo. O código-fonte, principalmente C, para SQLite é de domínio público. Inclui uma biblioteca C nativa e um cliente de linha de comando simples para seu banco de dados. Ele está incluído em vários sistemas operacionais; entre eles estão Android , FreeBSD , iOS , OS X e Windows 10 .

SQL Server Compact

O SQL Server Compact da Microsoft é um banco de dados incorporado com ampla variedade de recursos, como conexões de vários processos, T-SQL, ADO.NET Sync Services para sincronizar com qualquer banco de dados de back-end, Merge Replication com SQL Server, API de programação: LINQ to SQL, LINQ para entidades, ADO.NET. O produto é executado nas plataformas Desktop e Mobile Windows. Está no mercado há muito tempo, sendo utilizado por diversas empresas em softwares de produção ( Case Studies ). O produto passou por várias reformulações de marca e ficou conhecido com vários nomes como: SQL CE, SQL Server CE, SQL Server Mobile, SQL Mobile.

Veja também

Referências

  1. ^ Sepulturas, Steve. "COTS Databases For Embedded Systems" Archived 2007-11-14 at the Wayback Machine , Embedded Computing Design magazine, janeiro de 2007. Recuperado em 13 de agosto de 2008.
  2. ^ Mullins, Craig. "Empress Offers an Effective Embedded Database Solution" , 2005. Retirado em 2008-12-09
  3. ^ Gorine, Andrei e Krivolapov, Alexander. "Bancos de dados em modo kernel: uma tecnologia de DBMS para aplicativos de alto desempenho" , Dr. Dobb's Journal , abril de 2008. Recuperado em 13 de agosto de 2008.
  4. ^ Página inicial do HailDB
  5. ^ Encerrando o HailDB , por Stewart Smith em 19 de agosto de 2015, HailDB
  6. ^ "Embedding Informix Dynamic Server" , recuperado em 30 de agosto de 2009.
  7. ^ Veja Berkeley DB
  8. ^ Niccolai, James. "Atualização: Oracle compra fornecedor de banco de dados de código aberto Sleepycat" Arquivado em 13/06/2008 na Wayback Machine , "InfoWorld", 14/02/2006. Recuperado em 12 de junho de 2008.
  9. ^ "RocksDB Basics" . Página visitada em 19/07/2018 .
  10. ^ "Transações do RocksDB" . GitHub . Retirado 2016-04-04 .
  11. ^ "Como fazer backup do RocksDB?" . Recuperado em 19-07-2017 .
  12. ^ "Pontos de verificação" . Recuperado em 19-07-2017 .
  13. ^ "Filtros do RocksDB bloom" . GitHub . Retirado 2016-04-04 .
  14. ^ "Famílias de colunas no RocksDB" . GitHub . Retirado 2016-04-04 .
  15. ^ "Suporte TTL do RocksDB" . GitHub . Retirado 2016-04-04 .
  16. ^ "Operador de mesclagem do RocksDB" . GitHub . Retirado 2016-04-04 .
  17. ^ "Compactação universal" . GitHub . Retirado 2016-04-04 .
  18. ^ "Contexto de perf do RocksDB e contexto de estatísticas de IO" . GitHub . Retirado 2016-04-04 .
  19. ^ "Indexação espacial no RocksDB" . rocksdb.org . Página visitada em 19/07/2018 .
  20. ^ "Comparando os novos motores de armazenamento RocksDB e MMFiles" . Página visitada em 19/07/2018 .
  21. ^ "Dispositivos de armazenamento - Documentação Ceph" . Página visitada em 19/07/2018 .
  22. ^ "Camada de armazenamento - CockroachDB" . Página visitada em 19/07/2018 .
  23. ^ "mongodb-partners / mongo-rocks: camada de integração de armazenamento MongoDB para o mecanismo de armazenamento Rocks" . Página visitada em 19/07/2018 .
  24. ^ "MyRocks - Um mecanismo de armazenamento RocksDB com MySQL" . Página visitada em 19/07/2018 .
  25. ^ "Abrir o código-fonte uma redução de 10x na latência de cauda do Apache Cassandra" . Página visitada em 19/07/2018 .
  26. ^ "RocksDB em TiKV - PingCAP" . Página visitada em 19/07/2018 .
  27. ^ https://medium.com/walmartglobaltech/https-medium-com-kharekartik-rocksdb-and-embedded-databases-1a0f8e6ea74f
  28. ^ Resposta, Usman (29 de outubro de 2015). "Enviando uma nova mentalidade com SQLite no Windows 10" . Microsoft. Arquivado do original em 31/01/2016 . Retirado em 6 de março de 2016 .