Software de código abierto con API para gestionar tablas de datos muy dinámicas

Sabría si hay algún software de código abierto con API destinado a manejar un número (prácticamente) infinito de tablas de datos semiestructurados.

Lo que ya sé

Bases de datos relacionales

Todos sabemos que las bases de datos relacionales normalmente manejan un número finito de tablas con un número (prácticamente) infinito de filas. Tenemos MySQL por ejemplo para eso.

Un ejemplo típico de esto sería almacenar la tabla de clientes de una empresa... pueden ser millones de clientes.

hojas de calculo

Sin embargo, cuando se trata de datos de "naturaleza finita", pero son datos semiestructurados que cambian dinámicamente, los usuarios tienden a almacenar "listas cortas de cosas" en lugares como Excel o Google Spreadsheets.

Un ejemplo típico de esto puede ser una tienda de la esquina cuyo propietario no tiene ningún software y realiza un seguimiento de sus ingresos diarios en una hoja de cálculo. Y hace una hoja nueva mes a mes.

O una oficina de arquitectos y tienen una hoja de cálculo para rastrear qué licencias de software CAD compraron y cuándo renovarlas.

Bases de datos de documentos

Podríamos considerar que si la "forma de las filas" varía con frecuencia pero no todas las filas se actualizan en formato, se podría considerar Mongo o ElasticSearch para almacenar solo documentos de repuesto.

Como la tabla no está destinada a crecer infinitamente, cada tabla podría almacenarse en un documento JSON utilizando una matriz de matrices.

CSV + editores

CSV es simple pero vergonzoso cuando tienes algunos datos y quieres versionarlos. Cualquier técnico puede editar CSV a mano, pero cuando se lo das a algún empleado, debería verlo "como usuario" y "ver cuadrículas" y no "filas de texto entre comillas dobles separadas por comas".

Afortunadamente, existen algunos editores de CSV gratuitos para hacer la vida más fácil.

Problema a resolver / Propósito

Quiero rastrear "todo" en una pequeña empresa en tablas. Por ejemplo las tarifas que cada proveedor nos envía por email en PDF (pero luego "traducidas" a forma de tabla). Actualizan tarifas 3 o 4 veces al año, pueden ser de 10 a 100 tablas por documento, podemos tratar con unos 100 proveedores.

Es decir, cada una de las 3000 o 4000 mesas que manejamos cada año es diferente entre sí.

Administrarlos como 3000 o 4000 archivos de Excel, hojas de cálculo de Google o archivos CSV es complicado, especialmente cuando se trata de asignar una ID a cada tabla y luego "referenciar las tablas".

Las tarifas son documentos estáticos de "escritura única, lectura múltiple". Por otro lado, el uso alternativo (por ejemplo, un usuario en casa que solo desea rastrear "cosas en casa" podría tener algunas docenas de tablas (lista de libros que tenemos en casa, lista de bancos con los que trabajo, lista de proveedores de servicios como agua o gas que me cobran todos los meses, lista de amigos que han visitado nuestra casa durante los últimos 2 años) todas esas listas son ambas: cambiando lentamente + no van a crecer hasta el infinito en tamaño.

En todos esos casos ya explorados la cosa es:

Las bases de datos relacionales no están "pensadas" desde el punto de vista de que las "tablas" son "los documentos", sino que las "filas de las tablas" son los documentos y, por lo tanto, crear miles de tablas dinámicamente y cambiar su disposición de campos dinámicamente no es exactamente para para lo que fueron construidos. No puedo imaginar un sysop que permita a los usuarios crear arbitrariamente cualquier número de tablas usando la aplicación.

Por otro lado, los otros tres métodos (hojas de cálculo, bases de datos orientadas a documentos que contienen una tabla completa por objeto o CSV) tienen el mismo problema: las tablas contienen los datos, pero no hay una forma centralizada de manejar los "metadatos". " de esas tablas (asigne ID a las tablas, enumere todas las tablas existentes, haga referencia a algunas tablas de las otras tablas, realice un seguimiento de la fecha de creación, etc. La que está más cerca podría ser las hojas de cálculo de Google, pero nuevamente, manejando 10.000 Las hojas de Google vinculadas entre sí no son útiles.

Me gustaría saber si hay alguna herramienta que traiga las ventajas de todos esos juntos:

a) Poder cambiar "libremente" el formato de las tablas como lo haces en las hojas de cálculo sin tener que pensar en "alterar tabla" cada vez. b) Ser capaz de "identificar" cada tabla con algún tipo de ID de tabla que permita referencias cruzadas. c) Ser usable para cualquier empleado, incluso si no es un aficionado a la tecnología. d) Pensado para tener un número de mesas que crece infinitamente.

Además, debe tener adicionalmente "protección contra escritura" (una tarifa es una tarifa, y cuando se ingresa, nunca debe modificarse, si llega una nueva actualización, es una tabla nueva, no la editada anteriormente) o alternativamente si permite la edición , debe tener control de revisión.

Requisitos objetivos

  • DEBE ser de código abierto.
  • DEBERÍA proporcionar algún tipo de interfaz humana para que los no técnicos puedan escribir nuevas tablas o leer las existentes.
  • Si DEBE proporcionar una API, por lo que si realiza una aplicación web, por ejemplo, con PHP, puede recuperar los datos de las tablas que se mostrarán o lo que sea.
  • Si DEBE ser compatible con Docker.
  • DEBE implementar un almacenamiento WORM (adecuado para tarifas) o DEBE implementar un sistema de control de versiones (adecuado para listas que cambian lentamente) o ambos (idealmente configurables).

La única solución que se me ocurre ahora es hacer algunos "documentos separados" (hojas de cálculo, CSV o elasticsearch) y hacer "a mano" un software para administrarlos todos, indexarlos, asignarles las ID, etc.

Pero siento que no soy el primero en el mundo queriendo esto.

¿Algún software por ahí?

Respuestas (1)

Pruebe DynamoDB si puede pagarlo. Sí, no coincide con su requisito de código abierto, pero lo hace todo.

pero son datos semiestructurados que cambian dinámicamente

caso de uso ideal para DynamoDB

Como la tabla no está destinada a crecer infinitamente, cada tabla podría almacenarse en un documento JSON utilizando una matriz de matrices.

Las tablas de Dynamo son conjuntos de clave-valor y se pueden serializar en JSON.

Poder cambiar "libremente" el formato de las tablas como lo haces en las hojas de cálculo sin tener que pensar en "alterar tabla" cada vez

Sí, cada fila de la tabla de Dynamo puede tener un tipo diferente.

Ser capaz de "identificar" cada tabla con algún tipo de ID de tabla que permita referencias cruzadas

Sí.

Ser utilizable para cualquier empleado, incluso si no es un aficionado a la tecnología

Sí, DynamoDB tiene un panel web, pero también tiene una API que le permite escribir cualquier cliente que desee en cualquier idioma.

DEBE implementar un sistema de control de versiones (adecuado para listas que cambian lentamente) o ambos (idealmente configurables).

Sí. Tiene un excelente sistema de versiones.

Antes de iniciar una suscripción, puede implementarla localmente y probarla.

Lo intentaré, aunque esperaré más respuestas para ver si hay alguna solución de código abierto que coincida con la pregunta. Quería agradecer su esfuerzo al responder, incluso si no la seleccionó como "la" respuesta.