No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cloudbreak

9/15
Recursos

Tal vez te hayas preguntado en dónde almacena una Blockchain su información. A medida que se validan transacciones, a cada segundo el peso de toda esa información aumenta.

Bases de datos en una Blockchain

En la actualidad, tanto la Blockchain de Bitcoin como la de Ethereum rondan los 350 GB de información almacenada. Un número que sin dudas continuará creciendo con el tiempo.

Toda esta información tiene que estar siendo escrita y leída continuamente, por lo que se necesita de un proceso rápido que permita esto.

La Blockchain de Bitcoin y Ethereum utilizan una base de datos NoSQL clave/valor llamada LevelDB para almacenar la información. Se trata de un popular sistema para el guardado y acceso rápido a la información que es desarrollado y mantenido por Google y otras importantes bases de datos como IndexedDB lo utilizan.

Pero LevelDB, a pesar de sus interesantes prestaciones, no es lo suficientemente óptima para el propósito de una Blockchain. Permite aproximadamente 5000 transacciones por segundo (TPS), no permite hacer escrituras y lecturas en simultáneo.

Otra opción podría ser almacenar la información en memoria RAM, pero no es lo más óptimo tratándose de muchos gigas de información.

Tal vez una buena opción sería guardar la información en una memoria SSD, si bien es más lenta que una RAM, pero SSD modernos pueden alcanzar los 32 subprocesos simultáneos, lo que significa 370.000 lecturas por segundo o 185.000 TPS.

Si bien tanto GPU como SSD son rápidas, el problema siempre se encuentra en la CPU que suele ser más lenta formando así un cuello de botella.

Manejo de información en Solana

Solana se diferencia de otras Blockchains al no utilizar una base de datos como LevelDB. En su lugar, implementa una lógica de guardado de la información utilizando tanto de memoria RAM como la SSD para diferentes propósitos, el cual se denominó como Cloudbreak.

La información se registra utilizando dos técnicas:

  • Archivos mapeados en memoria.
  • Operaciones secuenciales en vez de aleatorias.
    • El índice de cuentas y bifurcaciones se almacena en la RAM.
    • Las cuentas se almacenan en archivos en memoria de hasta 4 MB de tamaño.
    • Cada mapa de memoria solo almacena cuentas de una única bifurcación propuesta.
    • Los mapas se destruyen aleatoriamente en tantos SSD como estén disponibles.
    • Se utiliza semántica de copy on writes.
    • Las escrituras se agregan a un mapa de memoria aleatorio para la misma bifurcación.
    • El índice se actualiza después de que se completa cada escritura.

Todos estos procesos permiten que las actualizaciones de la cuenta se copien en la escritura y se agreguen a un SSD aleatoria, escalando tanto serialmente como horizontalmente.

Otra optimización que implementa Solana es un Garbage Collector o recolector de basura que libera los espacios en memoria de las bifurcaciones que no fueron confirmadas y llevan mucho tiempo de retraso con respecto al estado actual de la red.

Entiéndase por bifurcación a la cadena de transacciones que continuamente los nodos crean al validar nuevas transacciones y proponen a la red para alcanzar el consenso sobre cuál de todas ellas es la correcta. La gran mayoría de las bifurcaciones se descartan y ese espacio en memoria debe liberarse para no consumir recursos de la red.

Conclusión

Tal vez uno de los temas más complicados de comprender sobre el funcionamiento de Solana. Su base de datos y persistencia de los mismos. En síntesis, Solana hace uso de todos los recursos disponibles en el sistema entre todos los nodos de la red para poder registrar la información.

La misma se encuentra en todo momento replicada en las memorias RAM o SSD de los nodos de la red y se busca optimizar la lectura a esta información mapeando la misma y de manera secuencial.


Contribución creada por: Kevin Fiorentino (Platzi Contributor).

Aportes 12

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Les dejo mis apuntes por si alguna persona le son útiles entre algunos párrafos pueden pegar las imágenes de las diapositivas mostradas en la clase

Cloudbreak: Base de datos de escalado de cuenta horizontal

Level Db basa de datos tradicional que utilizan varias blockchain pero tiene un inconveniente y es que la base de datos no puede hacer uso de lecturas y escrituras simultaneas, por esta razón tiene un máximo de 5000 transacciones por segundo

Esta Imagen muestra el datasheet de una Samsung que es una ssd del mercado, a pesar de que la ssd tiene 30 veces menos costo por byte es mil veces mas lenta que una RAM. En la imagen podemos ver que este ssd tiene 500mil IOPS que son lecturas y escrituras simultaneas.

1 Subproceso que tiene un solo ssd con una capacidad máxima de 15 lecturas por segundo tendríamos máximo 7500 transacciones por segundo

Los SSD modernos admiten 32 subprocesos simultáneos, por lo que pueden admitir 370000 lecturas por segundo aproximadamente 185mil tps sin embargo organizar la base de datos en cuentas de manera que sea posible lecturas y escrituras simultaneas entre estos 32 subprocesos es un desafío.

Hasta este punto en las blockchain tradicionales se ha generado un cuello de botella a pesar de que la GPU y la SSD tengan un mayor rendimiento la CPU no lo tiene.

Por esta razón Solana no hace uso de una base de datos tradicional para resolver el problema al contrario utiliza los siguientes procedimientos:

1. Archivos Mapeados en memoria
2. Utiliza operaciones secuenciales en vez de aleatorias
	a. El índice de cuentas y bifurcaciones se almacena en RAM
	b. Las cuentas se almacenan en archivos asignados en memoria de hasta 4MB de tamaño
	c. Cada mapa de memoria solo almacena cuentas de una única bifurcación propuesta
	d. Los mapas se destruyen aleatoriamente en tantos SSD como estén disponibles
	e. Se utiliza semántica de copy on writes
	f. Las escrituras se agregan a un mapa de memoria aleatorio para la misma bifurcación.
	g. El índice se actualiza después de que se completa cada escritura.

Todos estos procesos permiten que las actualizaciones de la cuenta se copien en la escritura y se agregen a un SSD aleatorio escalando tanto serialmente como horizontalmente

Otra de las optimizaciones que hace Solana es tener un recolector de basura que básicamente lo que hace es eliminar las bifurcaciones que llevan mucho tiempo atrasadas, Bifurcaciones que ya no tienen confirmaciones sobre sus transacciones.

En conclusión solana no usa una base de datos. Solana hace uso de las SSD disponibles en el sistema para poder registrar la información de dos maneras una es los archivos mapeados en memoria y la segunda es las operaciones secuenciales en vez de aleatorias.

" LevelDB se utiliza como base de datos de backend para IndexedDB de Google Chrome y es uno de los backends compatibles con Riak. Además, Bitcoin Core y go-ethereum almacenan los metadatos de la cadena de bloques utilizando una base de datos LevelDB. Minecraft Bedrock Edition utiliza una versión modificada para el almacenamiento de datos de fragmentos y entidades. Autodesk AutoCAD 2016 también utiliza LevelDB. "

Solana hace uso de:

  • Archivos mapeados en memoria.
  • Operaciones secuenciales en vez de aleatorias.
  • Recolector de basura de bifurcaciones atrasadas.

En conclusión, no hace uso de base de datos, sino de todas las SSDs disponibles para guardar la información.

“Solana no usa una base de datos. Hace uso de las SSD disponibles para registrar la información gracias a los Archivos Mapeados en memoria y las Operaciones secuenciales en vez de aleatorias ”

CloudBreak

Base de datos de escalado de cuentas horizontal.

RESUMEN CLASE 9:
CLOUDBREAK

CLOUDBREAK
Base de datos de escalado de cuentas horizontal.

I.- DB PREDESESORES

II.- SSD

Los SSD modernos admiten 32 subprocesos simultáneos, por lo que pueden admitir 370.000 lecturas por segundo, o aproximadamente 185.000 tps.

III.- CUELLO DE BOTELLA EN LOS PREDECESORES

IV.- SOLANA UTILIZA SSD DISPONIBLES DEL SISTEMA CON LAS SIGUIENTES OPTIMIZACIONES:

  • Archivos mapeados en memoria.

  • Operaciones secuenciales en vez de aleatorias.

V.- COMO SE HACER LAS OPERACIONES SECUENCIALES:

  1. El índice de cuentas y bifurcaciones se almacena en la RAM.

  2. Las cuentas se almacenan en archivos asignados en memoria de hasta 4 MB de tamaño.

  3. Cada mapa de memoria solo almacena cuentas de una única bifurcación propuesta.

  4. Los mapas se distribuyen aleatoriamente en tantos SSD como estén disponibles.

  5. Se utiliza semántica de copy on writes.

  6. Las escrituras se agregan a un mapa de memoria aleatorio para la misma bifurcación.

  7. El índice se actualiza después de que se completa cada escritura.

VI.- Las actualizaciones de la cuenta se copian en escritura y se agregan a un SSD aleatorio.

VII.- RECOLECTOR DE BASURA

  • Elimina las bifurcaciones que llevan mucho tiempo atrazadas.

  • Bifurcaciones que ya no tienen confirmaciones de sus transacciones.

CASI TODAS LAS BLOCKCHAIN USAN LA BASE DE DATOS LEVELDB…

Es la solución implementada en Solana para gestionar la escritura y lectura de los datos: Hacer el uso de archivos mapeados en memoria y operaciones secuenciales en vez de aleatorias

Personalmente, la clase que más me costó compreder hasta ahora. muy bueno, les comparto un material que creo es el original desde el cual la profesora preparó la clase.

Un datasheet, también conocido como una hoja de datos o ficha técnica, es un documento que se suele utilizar para la comunicación tecnológica que describe las especificaciones, explica el rendimiento y las características técnicas de un producto, material, componente, máquina, etc.

Me hizo recordar mi época leyendo datasheet en la universidad de microchips que nunca terminé de entender.

Muy interesante, al ser nuevo en el mundo del manejo de base de datos esto implica una novedad total, espero despues conocer estos elementos de base de datos en los otros cursos de platzi.

LevelDB es una biblioteca de almacenamiento rápido de código abierto basada en pares clave-valor con almacenamiento en disco