El almacenamiento de objeto (también conocido como almacenamiento basado en objetos) es una arquitectura de almacenamiento de dato que maneja los datos como objetos, al contrario que otras arquitecturas de almacenamiento como los sistemas de archivo, que manejan datos como una jerarquía de archivos, y como el almacenamiento de bloque, que maneja datos como bloques dentro de sectores y pistas. Normalmente cada objeto incluye el propio dato, una cantidad variable de metadatos, y un identificador global único. El almacenamiento de objetos puede ser implementado en múltiples niveles, incluyendo el nivel de dispositivo (dispositivo de almacenamiento de objetos), el nivel de sistema, y el nivel de interfaz. En cada caso, el almacenamiento de objetos busca habilitar las capacidades no cubiertas por otras arquitecturas de almacenamiento, como interfaces que pueden ser programadas directamente por la aplicación, un espacio de nombres que puede abarcar múltiples instancias de hardware físico, funciones de administración de datos como el manejo de la respuesta de los datos y la distribución de datos a un nivel más detallado para cada objeto.
El almacenamiento de objetos se utiliza para propósitos como almacenar fotos en Facebook, canciones en Spotify, o archivos en servicios de colaboración en línea, como Dropbox.
Historia
Orígenes En 1995, la búsqueda dirigida por Garth Gibson en Network-Attached Secure Disks fue la primera en promover el concepto de división en un número menor de operaciones comunes, como en la manipulación del espacio de nombres, que hace uso de operaciones comunes como la lectura y la escritura, para optimizar el rendimiento y escala de ambos. En el mismo año, 1995, una compañía belga - FilePool - se estableció para construir las bases de las funciones de almacenamiento. El almacenamiento de objetos fue propuesto por el laboratorio de la universidad de Carnegie Mellon como proyecto de investigación en 1996. Otro concepto clave fue la abstracción de la lectura y la escritura de datos para dar lugar a contenedores de datos más flexibles (objetos). El control de acceso a través de la arquitectura de almacenamiento del objetos fue definido más detalladamente por un miembro del equipo del NASD, Howard Gobioff, quién más tarde fue uno de los inventores del Sistema de Archivo del Google. Otro trabajo relacionado es el proyecto de sistema de archivos Coda, que se realizó nuevamente en Carnegie Mellon, el cual empezó en 1987 y engendró el sistema de archivos ¨Lustre¨. Otro proyecto relacionado es el OceanStore, realizado en la UC Berkeley y que dio comienzo en 1999.
Centera se presentó en 2002. La tecnología de almacenamiento de contenido direccionable fue desarrollado en Filepool y adquirida por la empresa EMC en 2001.
Desarrollo De 1999 a 2013, al menos 300 millones de dólares de financiación de riesgo estuvieron relacionados con el almacenamiento de objetos, incluyendo vendedores como SwiftStack, Amplidata, Bycast, Cleversafe, Cloudian, Nirvanix, y Scality. Esto no incluye ingeniería desarrollada por vendedores de sistemas como DataDirect Networks (WOS), EMC de Dell, Centera, Atmos, HDS (Hitachi Content Platform (HCP)), IBM, NetApp (StorageGRID), Redhat GlusterFS, vendedores de servicios en la nube como Amazon (AWS S3 en 2006), Microsoft (Microsoft Azure), Oracle (Nube de Oracle) y Google (Almacenamiento en la nube de Google en 2010), o desarrollo de software libre en Lustre, OpenStack (Veloz), MogileFS, Ceph y OpenIO. Existe un artículo que ilustra los productos que fueron publicados en julio de 2016.
Arquitectura miniaturadeimagen
Abstracción del almacenamiento Uno de los principios del diseño de almacenamiento de objetos es abstraer algunas de las capas más bajas de este almacenamiento fuera de los administradores y de las aplicaciones. Así, los datos son expuestos y tratados como objetos en vez de como archivos o bloques. Los objetos contienen propiedades descriptivas adicionales que pueden ser utilizadas para una mejor administración o indexación. Los administradores no tienen que actuar sobre funciones de almacenamiento de bajo nivel, como la construcción y la gestión de volúmenes lógicos para hacer uso de la capacidad del disco o la edición de los niveles de REDADA para tratar los fallos del disco.
El almacenamiento de objetos también permite el direccionamiento y la identificación de objetos individuales por más medios que el nombre de archivo o su ruta. El almacenamiento de objetos añade un identificador único dentro de cada agrupación (bucket), o a través del sistema entero, para soportar espacios de nombres mucho más grandes y eliminar las colisiones en los nombres.
Inclusión de metadatos personalizados dentro del objeto Almacenamiento de objeto separa explícitamente los metadatos de los archivos de los datos para incluir prestaciones adicionales. A diferencia de los metadatos fijos de los sistemas de archivos (nombre del archivo, fecha de creación, tipo, etc.), el almacenamiento de objetos proporciona para una funcionalidad completa, personalizable, cuyos metadatos están a nivel de objeto con el fin de:
Capturar la información específica de usuario o de la aplicación para mejorar los objetivos de la indexación Dar apoyo a las políticas de administración de los datos (p. ej. una política para manejar el movimiento de un objeto desde un nivel de almacenamiento a otro) Centralizar la administración de almacenamiento a través de muchos grupos y nodos individuales Optimizar el almacenamiento de los metadatos (p. ej. encapsulamiento, base de datos o almacenamiento por clave-valor) y el cacheo/indexación (cuando los metadatos de autorización son encapsulados con el resto de metadatos dentro del objeto) independientemente del tipo de almacenamiento de los datos (p. ej. almacenamiento binario no estructurado)
Además, en algunas implementaciones de sistemas de archivos basados en objetos:
Los clientes del sistema de archivos solo contactan con los servidores de los metadatos una vez el archivo está abierto para obtener el contenido directamente mediante servidores de almacenamiento de objetos (en conntraposición a los sistemas de archivos basados en bloques, que requieren un acceso constante a los metadatos) Los objetos de datos pueden ser configurados para cada archivo para permitir un ancho de banda adaptable, incluso a través de múltiples servidores de almacenamiento de objetos, soportando la optimización del ancho de banda y de la entrada/salida
Dispositivos de almacenamiento basados en objetos (OSD) así como algunas implementaciones de software (p. ej., Caringo Swarm) tratan los metadatos y los datos a nivel de dispositivo del almacenamiento:
En vez de proporcionar una interfaz orientada a bloques que lee y escribe bloques de datos de tamaño fijo, el dato está organizado en contenedores de datos de tamaño variable, llamados objetos Cada objeto tiene datos (una secuencia de bytes sin interpretar) y metadatos (un conjunto extensible de los atributos que describen el objeto); físicamente encapsulados para la recuperación de ambos. La interfaz de comandos incluye órdenes para crear y eliminar objetos, escribir y leer bytes de objetos individuales, y para editar y adquirir los atributos de los objetos Existen mecanismos de seguridad que proporcionan control de acceso para cada objeto y para cada comando
Administración programable de datos El almacenamiento de objetos proporciona interfaces programables que permiten a otras aplicaciones manipular los datos. En el nivel básico, esto incluye las funciones de creado, lectura, actualización y eliminación (CRUD), para la realización de operaciones básicas de lectura, escritura y eliminación. Algunas implementaciones de almacenamiento del objetos van más allá, apoyando funcionalidades adicionales como el versionamiento, la replicación, la administración del ciclo de vida y el movimiento de objetos entre diferentes niveles y tipos de almacenamiento. La mayoría de implementaciones de las APIs están basadas en RESTO, permitiendo el uso de muchas llamadas HTTP estándar.
Implementación
Dispositivos de almacenamiento basados en objetos La proposición del almacenamiento de objetos dentro del protocolo y de la capa del dispositivo fue hace 20 años y fue aprobada para el estándar SCSI establecido por Seagate en 2007 bajo el nombre de "Órdenes de Dispositivos de Almacenamiento basadas en objetos" (OSD, por sus siglas en inglés), pero no fue producido hasta el desarrollo de la plataforma de Almacenamiento Abierto Seagate Kinetic. El estándar SCSI para Dispositivos de Almacenamiento de Objetos fue desarrollado por un grupo de trabajo de la Asociación de la Industria de las Redes de Almacenamiento (SNIA) para el comité T10 del Comité Internacional para Estándares de Tecnología de la Información (INCITS). El T10 es responsable de todos los estándares SCSI.
Sistemas de archivos basados en objetos Algunos sistemas de archivos distribuidos utilizan una arquitectura basada en objetos, donde los metadatos del archivo están almacenados en servidores de metadatos y los datos del archivo están almacenados en servidores de almacenamiento de objetos. El servicio del cliente del sistema de archivos interactúa con los distintos servidores y los abstrae para presentar un sistema de archivos completo a usuarios y aplicaciones. IBM Spectrum Scale (también sabido como GPFS), EMC de Dell, Ceph, XtreemFS, y Lustre son ejemplos de este tipo de almacenamiento de objetos.
Almacenamiento de archivos Algunas implementaciones prematuras del almacenamiento de objetos fueron utilizadas para el archivado de estos, ya que las implementaciones estaban optimizadas para servicios de datos como la inmutabilidad de estos y no para el rendimiento. EMC Centera Y Hitachi HCP (anteriormente conocido como HCAP) son dos objetos generalmente etiquetados como productos de almacenamiento de archivos. Otro ejemplo es la plataforma de almacenamiento de objetos Quantum Lattus .
Almacenamiento en la nube La mayoría del almacenamiento en la nube disponible en el mercado hace uso de una arquitectura de almacenamiento de objetos. Algunos los ejemplos notables son Amazon Web Services S3, el cual salió al mercado en marzo de 2006, Rackspace Files (cuyo código fue donado en 2010 al proyecto Openstack y anunciado como OpenStack Swift) y el Almacenamiento en la Nube del Google, que fue lanzado en mayo de 2010.
Almacenamiento de objetos "cautivo" Algunas grandes compañías de Internet desarrollaron su propio software cuando los productos de almacenamiento de objetos no estaban disponibles comercialmente o en casos para usos muy concretos. Facebook inventó su propio software de almacenamiento de objetos, bajo el nombre en clave de Haystack, para satisfacer sus necesidades particulares de administración de fotos a gran escala de una manera eficiente.
Almacenamiento híbrido Unos cuantos sistemas de almacenamiento de objetos, como Ceph, GlusterFS, Cloudian, IBM Spectrum Scale, y Scality hacen uso del almacenamiento de Objetos y Archivos Unificados (UFO, por sus siglas en inglés), permitiendo a algunos clientes guardar objetos en un sistema de almacenamiento mientras, simultáneamente, otros clientes guardan archivos en el mismo sistema de almacenamiento. Mientras que el "almacenamiento híbrido" no es concepto ampliamente aceptado, las interfaces interoperables en el mismo conjunto de datos están disponibles en algunos productos de almacenamiento de objetos.
Almacenamiento de objetos virtuales