Almacenamiento de OBJETOS vs Bloques en Big Data

Última actualización: 20/07/2020

En esta entrada vamos a explicar en qué consiste el almacenamiento de objetos vs el almacenamiento de bloques, cuáles son sus diferencias, sus aplicaciones, cómo elegir entre ellos y su uso en el Big Data.

Almacenamiento de objetos vs bloques

¿Qué es el almacenamiento de objetos?

El almacenamiento de objetos (en inglés Object Storage) o almacenamiento basado en objetos consiste en tratar los datos de las unidades de almacenamiento como objetos.

Esta forma de almacenamiento se ha vuelto muy popular con los servicios en la nube como Amazon S3 o Azure Blob Storage.

Cada objeto se compone de ciertos elementos y características:

  • Los propios datos que se desean almacenar en el objeto. Estos datos pueden ser cualquier conjunto de información. No se tienen por qué corresponder con un fichero.
  • Metadatos. Los metadatos asociados a cada objeto pueden crecer y extenderse con nueva información relativa al dato. Son definidos por el creador del objeto y contienen toda la información que se considere de importancia para su almacenamiento. Comúnmente, entre estos metadatos se encuentra información de uso, fechas, permisos, etc.
  • Identificador del objeto. Este identificador debe ser único, ya que se usa para localizar el objeto en nuestro sistema.
Amazon S3 Logo

Es muy frecuente su uso para almacenamiento de datos que necesitan tener una alta disponibilidad y ser muy durables. Estas propiedades se consiguen habitualmente con técnicas de replicación (almacenando varias copias del dato en un sistema distribuido), de esta forma, aunque existan problemas en algunas partes del sistema, se puede seguir dando servicio sin interrupción. La replicación del dato también es útil para determinar automáticamente datos corruptos comparando el valor o el hash de cada objeto con el mismo valor calculado en sus copias.

Las fotos de Facebook y las canciones de Spotify usan este tipo de almacenamiento.

¿Qué es el almacenamiento de bloques?

El almacenamiento de bloques (Block Storage) consiste en dividir cada fichero en bloques de un tamaño fijo sin el uso de metadatos para determinar lo que es cada uno de estos bloques.

Esta estructura conduce a un mayor rendimiento cuando la aplicación y el almacenamiento son locales, pero tiene una latencia más alta cuando están separados.

Además, el almacenamiento de bloques soporta el montaje como un volumen de datos, por lo que el sistema operativo es capaz de acceder al volumen directamente. El rendimiento por gestión del volumen es mucho mejor que en el caso de almacenamiento de objetos.

Diferencias almacenamiento de objetos vs bloques

La gran ventaja del almacenamiento de objetos es la flexibilidad que proporcionan los metadatos asociados a cada objeto. Al ser ilimitados se pueden usar para incluir clasificaciones de los objetos y propiedades específicas para los casos de uso.

Almacenamiento de objetos vs bloques
Almacenamiento de objetos vs bloques

En cuanto al rendimiento, existe una desventaja de los sistemas de almacenamiento de objetos, y es que no tienen capacidad para editar una parte específica de un fichero como ocurre con el almacenamiento de bloques. En el caso de querer editar un fichero se debe reescribir en su totalidad, lo que repercute en el rendimiento. Para determinar si es ideal para nuestro caso de uso se debe considerar la tipología de los datos que se van a almacenar, la frecuencia de las modificaciones y el particionado que puedan tener.

Por ejemplo, el almacenamiento de objetos funciona muy bien para conjuntos de datos no estructurados donde los datos se escriben una vez pero se acceden frecuentemente como en las fotografías o en los ficheros multimedia.

Escalabilidad

La escalabilidad del sistema es otro factor a tener en cuenta entre estos dos tipos de almacenamiento. En este caso, el almacenamiento de bloques tiene unas limitaciones mayores al almacenamiento de objetos, que puede crecer fácilmente añadiendo más nodos dedicados a esta función. Al tratarse de una organización de datos basada en identificadores de objetos y unos metadatos extensibles resulta fácil de ampliar e incluso distribuir geográficamente.

Por otro lado, esto significa que las problemáticas asociadas a los sistemas distribuidos rambién aplican. Entre otras, se encuentra la decisión sobre la consistencia de los datos, que podría ser eventual. Típicamente, el almacenamiento de objetos usará consistencia eventual y el almacenamiento de bloques consistencia fuerte, aunque ambos pueden ser configurables en este aspecto. Por esta razón, el almacenamiento de objetos no se suele usar para datos transaccionales ni almacenamiento de bases de datos relacionales.

El almacenamiento de objetos tiene la capacidad de ahorrar costes a muchas organizaciones al poder usar hardware más barato y escalable. Por otro lado, el almacenamiento de bloques es un sistema muy estable e integrado en la mayor parte de las arquitecturas durante años. Esto permite al usuario estar más familiarizado con el almacenamiento de bloques frente al cambio de paradigma que supone el almacenamiento de objetos. La integración del almacenamiento de objetos con la visión tradicional de sistema de ficheros con directorios y ficheros clásicos aún no se encuentra al mismo nivel.

 OBJETOSBLOQUES
UsosDatos con pocas modificaciones y accesos frecuentesBases de datos y transacciones
EscalabilidadAlta, distribución geográficaBaja, sacrifica latencia
PropiedadesMetadatosNo tiene metadatos

Preguntas frecuentes – FAQ

¿Para qué se usa el almacenamiento de objetos?

El almacenamiento de objetos se usa para de datos que necesitan tener una alta disponibilidad y ser muy durables. Suelen ser conjuntos de datos no estructurados en la nube que se escriben una vez pero se acceden frecuentemente como fotografías o ficheros multimedia.

¿Para qué se usa el almacenamiento de bloques?

El almacenamiento de bloques se usa para almacenar datos en discos duros dividiendo cada fichero en bloques de tamaño fijo, aumentando el rendimiento cuando la aplicación y el almacenamiento son locales.

¿Cuáles son los servicios de almacenamiento de objetos en la nube?

Los servicios más conocidos y usados de almacenamiento de objetos en la nube son Amazon S3 en AWS y Azure Blob Storage.


A continuación el vídeo-resumen. ¡No te lo pierdas!


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta