0% acharam este documento útil (0 voto)
14 visualizações14 páginas

Particionamento

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1/ 14

FRAMEWORK

DE BIG DATA

Daniel dos Santos Brandão


Particionamento de dados
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

 Descrever as dificuldades relacionadas ao processamento de big data.


 Explicar as limitações causadas pelo particionamento de dados.
 Identificar os benefícios do particionamento de dados.

Introdução
Big data pode ser considerada como a eletricidade do século XXI, com
um alto poder de transformar muitos aspectos em relação aos negócios
e quanto à vida pública e privada. No entanto, não são os dados brutos
que permitem a mudança e levam a melhores resultados, mas os insights
derivados deles. Atualmente, as empresas buscam organizar seus dados
pensando na modelagem de negócios e em como isso pode ajudar a
administrar os processos. Nesse contexto, big data permite a descoberta
de informação baseada nos dados de pessoas, instituições e empresas,
o que pode revelar outros novos fatores. Portanto, a análise de big data
pode ajudar a mudar definitivamente o cenário de empreendimentos,
sejam privados ou públicos.
As empresas precisam de soluções que facilitem a análise do grande
volume de novos dados que surgem. Dessa forma, particionar os dados
em ambientes distribuídos é uma das técnicas que possibilitam processar
e analisar grandes quantidades de dados de forma mais rápida. Neste
capítulo, será apresentado um paralelo entre as vantagens e limitações
do particionamento de dados em big data.

1 Desafios do big data


Lidar com o grande volume de dados, conhecido e representado pelo termo big data,
não é nada fácil. Os dados estão em todo lugar, e os sistemas computacionais de
hardware e software estão em constante evolução para acompanhar o crescimento
2 Particionamento de dados

dos dados. O termo big data ganhou visibilidade a partir de 2001, quando empresas
e instituições passaram a compreender e desenvolver tecnologias para trabalhar
com o novo fenômeno da era da informação. Dessa revolução, surgiram soluções
para o processamento do big data, como o Apache Hadoop, criado pela Apache
Software Foundation, uma fundação responsável por várias tecnologias que lidam
com formas de uso e tratamento de dados. A grande vantagem da existência de
instituições como a Apache é que a pesquisa na área de dados tem se expandido
a tal ponto que o mercado recente permite que tanto empresas tradicionais da
área de tecnologia, como Microsoft, Amazon e Oracle, quanto pequenas startups
emergentes participem desse processo de desenvolvimento de tecnologias capazes
de processar o imenso universo de dados gerados diariamente.
As ferramentas analíticas de hoje podem ser usadas para revelar informa-
ções a partir de dados históricos ou de fluxos de informações capturadas em
tempo real. Essas ferramentas ajudam a analisar eventos passados, entender as
atividades atuais e prever resultados futuros. Com essa riqueza de informações,
surge uma rara oportunidade para que empresas superem seus concorrentes,
indo além de expectativas e dos planejamentos das partes envolvidas. Com
big data, as organizações podem conhecer melhor seus clientes, introduzir
novos produtos e serviços e gerenciar melhor os riscos na tomada de decisão.
Os dados estão em todo lugar, pois são trocadas informações a todo ins-
tante, como e-mails, consultas em ferramentas de busca, trocas de mensagens
por aplicativos, acesso a sistemas de gestão nos locais de trabalho e assim
por diante. Isso ocorre até mesmo no controle de tráfego aéreo durante a co-
municação entre as aeronaves e a torre de comando, no trânsito com radares
eletrônicos e nas milhares de câmeras captando imagens pelas cidades. Assim,
são gerados dados de vários tipos, os quais podem ser analisados em tempo
real e também ser armazenados para análise posterior.
Big data são grandes conjuntos de dados coletados que precisam de ferra-
mentas e tecnologias próprias para serem ingeridos, armazenados, processados
e entendidos. Independentemente de os dados serem de tipos diferentes, hoje, há
sistemas que permitem que os dados sejam compilados e agrupados a fim de que
se transformem em informação, uma vez que dado e informação não são a mesma
coisa. Dados são parte da informação que, em conjunto, formam o conhecimento
sobre determinado assunto. Logo, um dado sozinho pode não fazer muito sentido,
enquanto o conjunto de dados pode gerar uma informação. Com informações, se
alcança o conhecimento, seja dentro de um único contexto em uma área específica,
seja em uma área mais vasta, que está inserida em vários contextos diferentes.
Particionamento de dados 3

Um número como 2001 é considerado um dado, isoladamente. Porém, ao inserir-


mos mais dados, cria-se um contexto, como na frase “2001 foi o ano do atentado
às torres gêmeas nos Estados Unidos”. A partir disso, surge uma informação
gerada de dados obtidos, que, no caso, formam uma frase. Assim, a frase criada
é um conhecimento adquirido de informações obtidas por meio de dados, o
que dá origem à tríade “dado, informação e conhecimento”, que são elementos
complementares entre si.

Segundo o IDG (2013), em 2005, os seres humanos criaram 150 exabytes


de dados. Em 2010, esse número cresceu oito vezes, ou seja, foi para 1.200
exabytes. Os pesquisadores estimam que os dados corporativos aumentam
em torno de 60% ao ano — 90% dos quais não são estruturados — e a quan-
tidade média de dados armazenados por empresa é de 200 terabytes. Com
o volume de dados dobrando a cada dois anos, aproximadamente, muitas
organizações precisam gerenciar e analisar petabytes de dados estruturados e
não estruturados. Ao contrário dos dados corporativos tradicionais que podem
ser modelados e armazenados em tabelas relacionais, os dados atuais vêm
de muitas fontes diferentes e aparecem de várias formas, como em páginas
da internet, redes sociais, e-mails, ferramentas de pesquisas, sensores de
equipamentos e todos os tipos de arquivos multimídia e hipermídia, incluindo
áudio, vídeo e figuras.

Existem diferentes tipos de dados divididos em pelo menos três categorias, segundo
os principais autores: estruturados, não estruturados e semiestruturados. Estruturados
são dados que apresentam uma estrutura pré-definida. Portanto, realizar uma operação
ou uma análise com eles é mais fácil, pois já estão prontos para uso. Semiestruturados
são dados que apresentam certa estrutura e organização, mas nem todos seus atributos
são idênticos ou fixos. Os dados não estruturados representam dados vindos em
formatos diversos que precisam passar por uma normalização ou preparação antes
de serem úteis e analisados.
4 Particionamento de dados

O conceito de big data está amplamente relacionado aos seus Vs. Existem
diferentes opiniões sobre a quantidade desses Vs, mas os três básicos são:

 volume;
 velocidade;
 variedade.

Alguns outros complementares são:

 veracidade;
 variabilidade;
 valor.

Volume é a quantidade de dados envolvidos no conjunto de dados analisado


e a quantidade de espaço físico que eles ocupam (disco). Velocidade refere-
-se à rapidez com que os dados são gerados (em alta velocidade) e indica a
necessidade de obtenção dos dados em tempo hábil para uma análise, pois
um sistema que demora a fornecer dados ou respostas logo cai em desuso. A
variedade é a quantidade de fontes distintas que um dado tem. Elas podem
ser redes sociais, sensores, sistemas, aplicativos etc.
Existem diferentes estratégias para ajudar a facilitar o trabalho no trata-
mento dessas características de big data, e uma dessas estratégias é o parti-
cionamento de dados.

Particionamento
Segundo Abadi (2009), o particionamento de dados é uma técnica que pos-
sibilita a distribuição dos dados entre múltiplos discos, locais ou tabelas
com o objetivo principal de melhorar o desempenho das consultas e a gestão
dos dados. O particionamento é uma estratégia que possibilita melhorar o
tratamento de grandes volumes de dados produzidos e processados em alta
velocidade. Por facilitar o processamento distribuído, ele permite melhorar o
desempenho da computação em ambientes de big data e, por facilitar a adição
de hardware para armazenamento, pode ser considerado a principal estratégia
para a escalabilidade.
Existem diferentes abordagens para o particionamento de big data. Elas
devem ser escolhidas com cautela, uma vez que os benefícios devem ser
maiores que os eventuais efeitos negativos, incluindo maior investimento
de tempo e dinheiro na implementação de mudanças. Uma classificação
Particionamento de dados 5

para os tipos de particionamento é apresentada a seguir, com as abordagens


horizontal, vertical e funcional.
No particionamento horizontal, também chamado de “fragmentação” ou
“sharding”, os dados são fragmentados em partes menores, chamadas de “shard”
ou “fragmento”, com todos os dados do mesmo tipo juntos. Exemplos de sistemas
que possibilitam o armazenamento de big data e trabalham com o particionamento
horizontal incluem bancos de dados NoSQL como o Apache Hbase e o MongoDB.
Segundo Mahmud et al. (2020). Dentre os métodos mais utilizados para o parti-
cionamento horizontal, podemos destacar os listados a seguir.

 Range (por intervalo): os datasets são segmentados de acordo com um


intervalo pré-estabelecido. É o tipo de particionamento mais adequado
quando precisamos que os dados estejam em uma ordem global.
 Hash: uma técnica de agrupamento que divide os registros em conjuntos,
faz um hash para a chave do registro e mapeia esse hash para uma partição.
 Round-robin: usa um método para fazer o mapeamento do hash para a
partição, modificando a chave hash com o número de partições. O re-
sultado será o ID da partição, sendo zero o primeiro índice. Garante um
particionamento balanceado, com subconjuntos de tamanho equivalentes.
 Random (aleatório): os registros são divididos usando um gerador de
números aleatórios para definir a partição onde serão armazenados.
 Composite: pode ser uma composição de range-range ou range-hash.

Já o particionamento vertical divide as colunas de um dataset em sub-


conjuntos que compartilham uma chave de coluna. Por exemplo, é possível
dividir os dados de modo a deixar apenas campos ou colunas mais acessados
em uma partição, transferindo os demais a outras partições. Aqui, podemos
ter duas subcategorias: abordagem ótima e abordagem heurística.
Por sua vez, o particionamento funcional é uma forma diferente de parti-
cionar os dados: seria como criar subtabelas derivadas de uma tabela central.
É um uso comum na separação de dados que sejam apenas para leitura ou
consulta de outros que servem para escrita e leitura.
Os particionamentos horizontal e vertical também podem ser combinados,
criando uma abordagem de particionamento híbrida, que divide o dataset de
acordo com a aplicação-alvo ou com a carga de trabalho.
Ainda segundo Mahmud et al. (2020), o particionamento horizontal é
o mais utilizado para conjuntos de dados distribuídos e com uma grande
quantidade de registros. A Figura 1 ilustra o funcionamento dos métodos para
particionamento horizontal.
6 Particionamento de dados

Figura 1. Métodos horizontais de particionamento de dados. Na parte superior da


figura, temos os datasets (em azul) e, na parte inferior, a representação das partições.
Fonte: Mahmud et al. (2020, p. 88).

O ideal seria um sistema de arquivos distribuído fornecer o conjunto mais


abrangente de estratégias de particionamento, permitindo que os usuários alinhem
da melhor maneira a subdivisão de dados com os requisitos de negócios reais.
Particionamento de dados 7

2 Limitações do particionamento de dados


Quase todas as organizações possuem ferramentas de análise para revelar
padrões ocultos, obter insights estratégicos e gerar valor com o enorme volume
de dados que geram. Em muitos casos, os dados já estão sendo capturados,
mas não são totalmente aproveitados. Para originar análises interessantes, é
preciso obter dados que possibilitem a geração de informações capazes de
agregar valor para determinado projeto, instituição ou empresa. Os dados são
produzidos em um fluxo contínuo que flui para todas as áreas da economia
mundial. Cada projeto que abrange dados precisa ser bem elaborado a fim
de aproveitar o que as empresas produzem de volume crescente de dados
transacionais capturados, que podem ser trilhões de bytes de informações
sobre seus clientes, fornecedores e operações.
O modo de armazenamento dos dados fará toda a diferença na hora de
analisar as informações contidas neles. Como ressaltam Sharda, Delen e Turban
(2019, p. 75), “no mundo real, os dados costumam não estar prontos para serem
usados em tarefas de análise de dados. Eles costumam se apresentar sujos, mal
alinhados, excessivamente complexos e imprecisos”. Dessa forma, é possível
perceber que o modo de armazenamento dos dados pode ser, primariamente,
com dados não estruturados ou semiestruturados, para, posteriormente, serem
pré-processados e passados a um ambiente de dados estruturados.
O particionamento de dados é a forma de fragmentar ou particionar os dados
em diferentes meios físicos. A forma de armazenamento de dados utilizando
sistemas distribuídos é um formato comumente aceito quando se trata de big
data. O particionamento permite que tabelas e índices de um banco de dados
sejam subdivididos em partes menores individuais. Cada parte do sistema de
gerenciamento de dados é chamada de partição. Uma partição tem seu próprio
nome e, opcionalmente, pode ter suas próprias características de armazenamento.
Da perspectiva de um administrador de sistemas de armazenamento de dados,
um objeto particionado possui várias partes que podem ser gerenciadas coleti-
vamente ou individualmente (BAER, 2007). Isso fornece ao administrador uma
flexibilidade considerável ao gerenciar um objeto particionado. No entanto, da
perspectiva do aplicativo, um conjunto de dados (dataset) particionado é idêntico
a outro não particionado, ou seja, nenhuma modificação é necessária no comando
para consulta dos dados, por exemplo. Por mais que haja uma divisão física
de onde estão os dados, logicamente, ainda é apenas uma dataset, e qualquer
aplicativo pode acessá-lo, assim como ocorre em um dataset não particionado.
Mannino (2008) exemplifica o uso do processamento em bancos de dados
paralelos com a necessidade da junção de grandes tabelas em bancos de dados
8 Particionamento de dados

relacionais. O autor ainda apresenta dois importantes fatores que fazem o


processamento em servidores de bancos de dados de maneira paralela: scaleup
e speedup. Segundo o autor, scaleup tem a ver com a quantidade de trabalhos
( jobs) que são realizados com o objetivo de aumentar a capacidade computa-
cional. Ela é uma forma de medir o tamanho de um trabalho. O scaleup é uma
capacidade de escalabilidade linear, com aplicação para que um aumento da
capacidade de computadores em um número X permita o aumento também em
X vezes a quantidade de trabalho realizado no mesmo tempo de execução de
uma aplicação. Porém, nem sempre será possível o uso de scaleup de maneira
linear. Portanto, scaleup se refere à escalabilidade e capacidade de medir a
expansão da capacidade de um computador em processar e armazenar dados.
Já speedup diz respeito à velocidade em que uma resposta, consulta ou
transação será executada em um servidor de banco de dados. Como afirma
Mannino (2008), o speedup é uma forma de avaliar ou fazer um comparativo
entre o tempo que se gastava em uma transação com configurações em situa-
ções normais em comparação com o tempo gasto com a capacidade adicional
vinda do particionamento de dados. Com isso, o autor quer dizer que, em um
processamento paralelo de dados particionados, uma vez que as configurações
estejam adequadas à realidade do servidor, o tempo de resposta e conclusão de
um trabalho será reduzido, o que é uma vantagem do particionamento de dados.

Desafios do particionamento de dados


Algumas operações em dados particionados são mais complexas que outras.
Enquanto as operações de manutenção de partição permitem a rápida remoção de
dados, a granularidade de uma operação é vinculada aos limites das partições que
estão sendo eliminadas ou truncadas. Com frequência, porém, ocorrem exceções
à regra: por exemplo, como parte de uma operação de rollback, deseja-se remover
todos os dados com mais de três anos, mas não nenhum pedido que não tenha
sido oficialmente fechado. Embora essa seja uma situação muito rara de acontecer,
esse requisito de negócio exclui o uso de uma partição truncada ou descartada.
Para prevenir problemas, o ideal é lidar com essa situação programati-
camente, preservando os valores extremos. As operações de manutenção
de partição são aprimoradas em bancos de dados modernos para permitir
a filtragem de dados como parte de qualquer operação de manutenção da
partição. No exemplo citado, mover a partição e preservar todos os registros
antigos que não estão oficialmente fechados obtém a remoção dos dados. As
operações de manutenção de partição filtrada levam a manutenção de dados
às operações de manutenção de partição.
Particionamento de dados 9

O particionamento pode ser feito para atingir diferentes objetivos. Ele traz
um elemento novo quando se trata do desenho de um sistema ou aplicativo.
Logo, lidar com dados particionados também requer que a tecnologia e a
linguagem de programação utilizadas no desenvolvimento estejam aptas para
isso. É indicado que o particionamento de dados esteja no projeto original dos
dados, já pensando em seu crescimento e na escalabilidade posterior. Afinal,
é consideravelmente mais simples implementar um design de aplicação desde
o princípio considerando-se a partição dos dados do que alterar a arquitetura
depois do aplicativo pronto. De acordo com a documentação oferecida pela
Microsoft Azure (2018), a lógica da forma como se acessa os dados acaba por ser
diferenciada, precisando ser modificada caso a aplicação já tenha sido criada.
Com a necessidade de distribuir os dados em partições, será necessário migrar
grandes quantidades de dados já existentes, o que pode impactar o tempo que
os usuários teriam que esperar para ter acesso aos dados durante essa migração.
Outros desafios a serem levados em consideração são:

 replicar de partições como forma de prevenir falhas eventuais;


 avaliar os limites físicos de servidores de bancos de dados;
 realizar o rebalanceamento dos fragmentos particionados como forma
de garantir um crescimento saudável do armazenamento dos dados;
 criar mapas com metadados sobre as partições como forma de diminuir a
busca por dados, evitando a necessidade de percorrer todas as partições
atrás de um dado solicitado.

3 Benefícios do particionamento de dados


O particionamento fornece uma maneira simples e automatizada de imple-
mentar uma estratégia de gerenciamento do ciclo de vida da informação.
Segundo Microsoft Azure (2018), o particionamento de dados pode apre-
sentar diversos benefícios, como os apresentados a seguir.

 Melhor escalabilidade: a escalabilidade horizontal, quando temos que


adicionar mais recursos de hardware a um computador (como memória,
processador e disco), tem um limite. Contudo, o particionamento permite
melhorar a escalabilidade vertical quando adicionamos mais computadores
ao mesmo cluster para aumentar a capacidade de armazenamento.
 Mais alto desempenho do acesso aos dados: permite que operações
que acessam partições diferentes possam ser processadas em paralelo.
10 Particionamento de dados

 Dados mais seguros: o particionamento permite a separação dos dados


da forma mais adequada ao objetivo dos dados.
 Flexibilidade operacional: podem ser definidas diferentes estratégias
para backup, monitoramento e outras tarefas de administração dos
dados, de acordo com as necessidades do projeto.
 Correspondência de diferentes repositórios de dados a um padrão: as
partições podem ser configuradas para receber diferentes tipos de dados.
 Melhora na disponibilidade dos dados em uma organização: o
particionamento, quando aliado à replicação, evita o problema de ponto
único de falha, pois um dado replicado pode ser encontrado em um
particionamento diferente no caso de falha em uma das partições.

Para entendermos melhor os benefícios do particionamento, podemos fazer


a comparação de acordo com o método utilizado apresentada no Quadro 1.
É possível perceber que todos possibilitam a busca sequencial em um dataset
inteiro, e isso é uma vantagem compartilhada pelos métodos horizontais, que
são os mais utilizados para particionamento em big data.

Quadro 1. Métodos de particionamento horizontais: benefícios e limitações

Tipo Benefícios Limitações

Range Partições de dados bem Se todos os processos estiverem


balanceadas; em uma única partição, pode
bom para consultas pontuais e ocasionar sobrecarga nela.
de intervalos, pois acessa poucas
partições em cada consulta.
Hash Bom desempenho em consultas Não é a melhor opção para
pontuais baseadas nos atributos consultas por intervalo e para
das partições, pois consulta em consultas pontuais em atributos
apenas uma partição. não particionados.
Round-robin Partições de dados bem Consultas de intervalo e pontu-
balanceadas. ais são mais difíceis de processar.
Random Partições de dados razoavel- Processamento extra para calcu-
mente bem balanceadas. lar os valores aleatórios. Como
os registros são distribuídos
randomicamente, não seguem
uma ordem.

Fonte: Adaptado de Mahmud et al. (2020).


Particionamento de dados 11

Com isso, é possível concluir que o particionamento pode melhorar muito


a capacidade de gerenciamento, desempenho e disponibilidade de quase todos
os sistemas de armazenamento de big data. Percebe-se que, como o particio-
namento é transparente para a aplicação que acessa os dados e, consequen-
temente, para o usuário do aplicativo, ele pode ser facilmente implementado
para qualquer tipo de aplicativo, pois não são necessárias alterações caras e
demoradas. Seu uso, dependendo do planejamento e da cautela, pode agregar
muitas vantagens ou se tornar um problema, caso seja mal planejado ou haja
erros na sua implementação.

ABADI, D. (2009) Data Partitioning. In: LIU L., ÖZSU M.T. (eds) Encyclopedia of Database
Systems. Springer, Boston, MA. Disponível em: https://doi.org/10.1007/978-0-387-39940-
9_688. Acesso em: 03 nov. 2020.
BAER, H. Particionamento no banco de dados Oracle 11g. Oracle, São Paulo, jun. 2007.
Disponível em: https://www.oracle.com/technetwork/pt/database/enterprise-edition/
documentation/particionamento-banco-de-dados-11g-432098-ptb.pdf?source=ad:p
as:go:dg:bd+:ow:lp:cpo::. Acesso em: 13 fev. 2020.
IDG. Worldwide external disk storage systems factory revenue increased [...]. IDG,
Framingham, 3 Mar. 2013. Disponível em: https://www.idg.com/news/worldwide-
-external-disk-storage-systems-factory-revenue-increased-2-3-during-the-fourth-
-quarter-of-2012-and-4-7-for-the-full-year-according-to-idc/. Acesso em: 13 fev. 2020.
MAHMUD, Mohammad Sultan et al. A survey of data partitioning and sampling methods
to support big data analysis. Big Data Mining and Analytics, v. 3, n. 2, p. 85–101, jun. 2020.
MANNINO, M. V. Projeto, desenvolvimento de aplicações e administração de banco de
dados. 3. ed. Porto Alegre: Bookman, 2008.
MICROSOFT. Usando o particionamento de tabela e índice. Microsoft, [s. l.], 6 ago. 2017.
Disponível em: https://docs.microsoft.com/pt-br/sql/relational-databases/server-
-management-objects-smo/tasks/using-table-and-index-partitioning?view=sql-server-
-ver15. Acesso em: 13 fev. 2020.
MICROSOFT AZURE. Particionamento horizontal, vertical e funcional de dados. Microsoft
Azure, [s. l.], 4 nov. 2018. Disponível em: https://docs.microsoft.com/pt-br/azure/archi-
tecture/best-practices/data-partitioning#why-partition-data. Acesso em: 13 fev. 2020.
SHARDA, R.; DELEN, D.; TURBAN, E. Business intelligence e análise de dados para gestão
do negócio. 4. ed. Porto Alegre: Bookman, 2019.
12 Particionamento de dados

Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.

Você também pode gostar