Show HN: ScratchDB: Snowflake open source sobre ClickHouse
(github.com/scratchdata)- Scratch Data es un wrapper que permite transmitir datos de entrada y salida en una base de datos analítica, y ejecutar consultas analíticas sobre entradas JSON arbitrarias
- Si se ejecuta sin configuración, prepara automáticamente una base de datos local DuckDB con capacidad de lectura y escritura
- Al enviar datos JSON a
POST /api/data/insert/events?api_key=local, crea automáticamente la tablaeventsy sus columnas - Flujo de uso de la API HTTP: enviar consultas SQL a
GET /api/data/querypara consultar los datos insertados - Ofrece funciones para compartir o copiar los resultados de consultas
- La API
sharecrea un ID de consulta, expira después deldurationespecificado en segundos y permite compartir datos mediante enlaces CSV o JSON - Después de configurar varias bases de datos, ejecuta una consulta SQL en la base de datos de origen y gestiona automáticamente la creación de la tabla de destino y la inserción de datos
- La API
1 comentarios
Opiniones en Hacker News
Sería bueno que explicaran qué significa open-source Snowflake. No parece haber una explicación desarrollada en la descripción, el repositorio ni el sitio
Me pregunto si el objetivo es reproducir explícitamente todas las funciones de Snowflake: https://docs.snowflake.com/en/user-guide/intro-supported-fea...
El objetivo de este proyecto es crear una excelente experiencia de desarrollo sobre una base de datos analítica. Vemos eso como una de las varias propuestas de valor de Snowflake. También buscamos que los usuarios tengan control total sobre sus datos y sobre cómo se procesan, y que puedan usar recursos de cómputo de forma económica
Nuestro objetivo no es igualar las funciones de otro producto, pero a medida que crezcamos construiremos funciones importantes para las empresas
Trabajo en ClickHouse
Creo que las bases de datos OLAP en tiempo real tienen el potencial de soportar mejor parte del trabajo que hoy se hace en Postgres o en data warehouses en la nube, cuando se requiere ingesta en tiempo real y consultas analíticas. Simplificar la experiencia de desarrollo sin tener que aprender todos los detalles de una base de datos potente también acelera mucho el desarrollo
Me da curiosidad en qué se diferencia este proyecto de GraphJSON(https://www.graphjson.com/) y Tinybird(https://www.tinybird.co/)
Técnicamente tomamos decisiones de diseño distintas para la ingesta y el procesamiento de datos. Por ejemplo, incluso después de crear una tabla, se puede enviar un JSON nuevo con columnas distintas y se ingiere sin migraciones manuales. También tratamos los arrays JSON de forma diferente: en vez de usar arrays de ClickHouse, permitimos dividirlos en varias filas de ClickHouse
Filosóficamente, creo que hay mucho espacio para software open source con una gran UI y experiencia de desarrollo. Llevo mucho tiempo escribiendo open source y creo que es la mejor forma de crear herramientas exitosas para desarrolladores
Buen producto, gracias por compartirlo
Tenía entendido que ClickHouse ya soporta de forma nativa el aplanamiento de JSON[1]. Es una función que salió hace poco, en la versión 22.3.1; me pregunto si empezaron a trabajar en esto antes de eso[2], o si es un enfoque distinto. También me gustaría conocer los pros y contras de cada uno
[1] https://clickhouse.com/docs/en/integrations/data-formats/jso...
[2] https://scratchdb.com/blog/flatten-json/
Hablando de forma más factual, no usamos tuplas para JSON anidado, sino que representamos la relación
parent_childen las claves con guiones bajos. Tampoco usamos arrays; hacemos que sea fácil dividirlos en varias filas para poder usar SQL normalNo lo hemos comparado directamente con las distintas formas en que ClickHouse procesa JSON, pero el objetivo era crear algo que, al ejecutarlo, simplemente funcione como esperas
Para quienes tengan curiosidad, la licencia es AGPL-3.0
Felicitaciones por el lanzamiento. Me pregunto si esto puede usarse para datos de logs y cuánto tiempo se conservan los datos ingeridos
Como simplemente se almacenan en la base de datos, se mantienen tanto tiempo como quieras. En la versión alojada se cobra por GB de datos comprimidos, así que puedes conservar muchos logs y también borrar datos antiguos si quieres ahorrar espacio en disco
Gracias por compartirlo; se ve muy limpio y fácil de usar
Me pregunto si tienen planes de soportar también formatos de datos que no sean JSON al insertar. Por ejemplo, archivos CSV, archivos Parquet, mensajes Avro o Protobuf
Me interesa saber cómo te gustaría que se viera
Sería bueno que enviaran los benchmarks a ClickBench
Me pregunto qué implicaciones tiene la licencia si uso esto para ofrecer un servicio público sin modificar el código proporcionado
Por ejemplo, usarlo en un foro, pero con un fragmento de código separado que mete y saca datos de ScratchDB
Me pregunto por qué el almacenamiento es 10 veces más caro que BigQuery. También quisiera saber cómo se compara el precio del cómputo con BigQuery
Edición: Bigtable → BigQuery
No he usado Bigtable, pero parece que tiene una tarifa mínima de unos 300 dólares incluso sin datos. ScratchDB tiene un mínimo de 10 dólares por 30 GB
Además, en promedio la compresión de datos es de 25%. Si 1 TB de datos ocupa solo 250 GB, pagas solo por eso
Bigtable no es OLAP, así que no se usaría para los mismos datos. Esto compite más directamente con BigQuery de GCP
Nos interesa mucho el feedback sobre precios. Necesitamos poder seguir desarrollando, así que queremos encontrar un camino razonable
Felicitaciones por el lanzamiento; se ve bien. Inferir el esquema sobre la marcha es excelente para empezar rápido, pero me pregunto si también hay una forma de definir el esquema explícitamente si uno quiere
Estoy pensando, por ejemplo, en configuraciones de compresión por columna
Poder configurarlo sobre la marcha, o mejor aún, una función que recomiende al usuario qué método de compresión debería usar según los datos reales, podría ser útil. También me encantaría discutirlo en un issue de GitHub