Blame programming-guidelines/pt_BR/databases.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2003/XInclude" type="topic" id="databases" xml:lang="pt-BR">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
    <link type="guide" xref="index#specific-how-tos"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Philip Withnall</name>
Packit 1470ea
      <email its:translate="no">philip.withnall@collabora.co.uk</email>
Packit 1470ea
      <years>2015</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
Packit 1470ea
Packit 1470ea
    <desc>Armazenamentos simples de objetos persistentes</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Rafael Fontenelle</mal:name>
Packit 1470ea
      <mal:email>rafaelff@gnome.org</mal:email>
Packit 1470ea
      <mal:years>2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Bancos de dados</title>
Packit 1470ea
Packit 1470ea
  <synopsis>
Packit 1470ea
    <title>Resumo</title>
Packit 1470ea
Packit 1470ea
    <list>
Packit 1470ea
      <item>

Use bancos de dados para casos de uso apropriados: não para dados de configuração (use GSettings). (<link xref="#when-to-use-databases"/>)

</item>
Packit 1470ea
      <item>

Escolha entre GOM e GVDB com base em se indexação é necessária. (<link xref="#when-to-use-databases"/>)

</item>
Packit 1470ea
      <item>

Considere sua política de vacuuming antes de usar GOM. (<link xref="#when-to-use-databases"/>)

</item>
Packit 1470ea
      <item>

Evite vulnerabilidades de injeção SQL usando as instruções preparadas. (<link xref="#sql-injection"/>)

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </synopsis>
Packit 1470ea
Packit 1470ea
  <section id="when-to-use-databases">
Packit 1470ea
    <title>Quando usar bancos de dados</title>
Packit 1470ea
Packit 1470ea
    

Dados de configuração devem ser armazenados em <link href="https://developer.gnome.org/gio/stable/GSettings.html">GSettings</link>. Como uma regra de ouro, se alguns dados precisam ser persistentes e afetam como um aplicativo se comporta, eles são dados de configuração. Se eles estão potencialmente sujeitos a políticas impostas pelo administrador do sistema (tal como configurações de proxy e bloqueio), são dados de configuração. Se eles contêm conteúdo criado por usuários, não são dados de configuração e não devem ser armazenados em GSettings.

Packit 1470ea
Packit 1470ea
    

Para tais situações nas quais dados de usuário estejam altamente estruturado, armazená-los em um banco de dados é sensível. Há dois bancos de dados principais sugeridos para usar com GNOME: GOM e GVDB. GOM é um interfaceador do SQLite e, portanto, implementa indexação de campos e consultas no tipo SQL. GVDB é um armazenamento de objeto muito mais simples, oferecendo suporte a serialização rápida de um dicionário de objetos para disco.

Packit 1470ea
Packit 1470ea
    

GOM deve ser usado se você precisa de recursos avançados, especialmente indexação. Do contrário, GVDB deve ser usado.

Packit 1470ea
Packit 1470ea
    

Antes de decidir por usar o GOM (e, portanto, SQLite), você deveria considerar uma política de vacuuming para o banco de dados e se seu caso de uso vai interagir bem com o sistema de vácuo do SQLite. Vaccuming é, efetivamente, o termo para desfragmentação do banco de dados — se um banco de dados não for adequadamente aspirado, o desempenho será degradado e seu tamanho vai aumentar indefinidamente. Leia <link href="http://blogs.gnome.org/jnelson/2015/01/06/sqlite-vacuum-and-auto_vacuum/">este artigo</link> sobre vacuuming para mais informações; considere-o antes de escolher usar GOM.

Packit 1470ea
Packit 1470ea
    

GNOME possui uma outra biblioteca de banco de dados: GNOME Data Access (GDA). Ela visa abstrair o acesso a vários tipos de banco de dados relacionais, para uso em um programa utilitário de banco de dados ou programa de escritório, por exemplo. Ela não é adequado para armazenar <link href="https://developer.gnome.org/gio/stable/GSettings.html">configurações de usuários</link>.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="gom">
Packit 1470ea
    <title>Usando o GOM</title>
Packit 1470ea
Packit 1470ea
    

Fornecer um tutorial do GOM vai além do escopo deste documento, mas um <link href="https://developer.gnome.org/gom/">manual de referência está disponível</link>.

Packit 1470ea
Packit 1470ea
    <section id="sql-injection">
Packit 1470ea
      <title>Injeção de SQL</title>
Packit 1470ea
Packit 1470ea
      

GOM não permite acesso às APIs de consulta de baixo de nível do SQLite. Ao usá-las, as consultas devem ser construídas usando a API de <link href="https://www.sqlite.org/c3ref/stmt.html">prepared statement</link> (instrução preparada) e <link href="https://www.sqlite.org/c3ref/bind_blob.html">value binding</link> (associação de valor) do SQLite, em vez de construir strings SQL e, então, passá-las para o SQLite interpretar. Construir strings possibilita as vulnerabilidades da <link href="https://pt.wikipedia.org/wiki/Inje%C3%A7%C3%A3o_de_SQL">injeção de SQL</link>, o que pode fornecer acesso aos atacantes a dados de usuários a partir do banco de dados.

Packit 1470ea
    </section>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="gvdb">
Packit 1470ea
    <title>Usando o GVDB</title>
Packit 1470ea
Packit 1470ea
    

GVDB possui uma API simples que espelha a tabela de hash convencional. Atualmente, GVDB está disponível apenas como uma biblioteca de copiar-e-colar; obtenha a cópia mais recente do código de <link href="https://git.gnome.org/browse/gvdb">GVDB git</link> e copie-o para seu projeto. Ele está licenciado sob LGPLv2.1+.

Packit 1470ea
Packit 1470ea
    

Um tutorial completo do GVDB vai além do escopo deste documento.

Packit 1470ea
  </section>
Packit 1470ea
</page>