Jednoduché zpracování JSON

Jednoduché zpracování JSON
« kdy: 04. 07. 2022, 22:33:39 »
Hledám něco, v čem zpracovat JSON. Nějaký deklarativní jazyk. `jq` je příliš jednoduché (funkčně)/složité(pro BFU), a programovací jazyk je zas příliš složitý. Zkusil jsem Jsonnet, ale ten ze zase dost pomalý, za každou funkci pro lepší čitelnost se platí 100ms. Současně ohýbáme MongoDB agregace.  ::)

Jsonnet se zdál jako perfektní kandidát, protože by interpret šel embedovat do Go programu.
Nemá někdo nějaké eso v rukávu?
« Poslední změna: 10. 07. 2022, 22:45:42 od Petr Krčmář »


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:JSON processor
« Odpověď #1 kdy: 04. 07. 2022, 22:44:48 »
něco, v čem zpracovat JSON. Nějaký deklarativní jazyk
SQL 2016

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:JSON processor
« Odpověď #2 kdy: 04. 07. 2022, 23:28:25 »
zacal bych nactenim pres libjson do C a pak.. to nevim - chybi popis co vlastne s tim chces dale delat :)

Re:JSON processor
« Odpověď #3 kdy: 05. 07. 2022, 02:13:27 »
zacal bych nactenim pres libjson do C a pak.. to nevim - chybi popis co vlastne s tim chces dale delat :)

Jak jsem psal, programovani bych se rad vyhnul. A C obzvlášť. Do vlastní implementace se fakt nehrnu. Cílovka jsou, řekněme neprogramátoři, co však ví co je JSON a umí psát funkce třeba v excelu, a současně i agregace pro MongoDB :)
Cílem je si přizpůsobit JSON soubory všech tvarů i patvarů se zaměřením na happy path.

Re:JSON processor
« Odpověď #4 kdy: 05. 07. 2022, 02:21:31 »
něco, v čem zpracovat JSON. Nějaký deklarativní jazyk
SQL 2016

To je z deště pod okap. Místo zpracování v MongoDB, tak se to bude zpracovávat v SQL databázi.


RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:JSON processor
« Odpověď #5 kdy: 05. 07. 2022, 02:57:45 »
zacal bych nactenim pres libjson do C a pak.. to nevim - chybi popis co vlastne s tim chces dale delat :)

Jak jsem psal, programovani bych se rad vyhnul. A C obzvlášť. Do vlastní implementace se fakt nehrnu. Cílovka jsou, řekněme neprogramátoři, co však ví co je JSON a umí psát funkce třeba v excelu, a současně i agregace pro MongoDB :)
Cílem je si přizpůsobit JSON soubory všech tvarů i patvarů se zaměřením na happy path.

Tak si rozjed CLI javascript a muzes tam ty JSONy ladovat nativne, a kazdy nemehlo snad jakousi agregaci v javasriptu uz zvladne (?).

Jako nechapu tento dnesni pristup - chci pouzit svuj pocitac, na zpracovani svych dat, ale nechci programovat. Tak si na to najmete nekoho, kdo programovat umi, ne? Taky nechcete po uklizecce v hotelu, aby vam delala jidlo nebo odvezla na letiste.

Re:JSON processor
« Odpověď #6 kdy: 05. 07. 2022, 18:18:29 »
Jako nechapu tento dnesni pristup - chci pouzit svuj pocitac, na zpracovani svych dat, ale nechci programovat. Tak si na to najmete nekoho, kdo programovat umi, ne? Taky nechcete po uklizecce v hotelu, aby vam delala jidlo nebo odvezla na letiste.

urcite bych si na zpracovani JSONu nenajal nekoho, kdo to chce delat v C.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:JSON processor
« Odpověď #7 kdy: 05. 07. 2022, 19:04:16 »
Jako nechapu tento dnesni pristup - chci pouzit svuj pocitac, na zpracovani svych dat, ale nechci programovat. Tak si na to najmete nekoho, kdo programovat umi, ne? Taky nechcete po uklizecce v hotelu, aby vam delala jidlo nebo odvezla na letiste.

urcite bych si na zpracovani JSONu nenajal nekoho, kdo to chce delat v C.

Vsechno je otazka nalezeni kompromisu mezi pohodlim a vykonem. A pak se casto opomiji, jakym smerem se bude skalovat - v tomto oboru bych ocekaval miliony opakovani malo typu zprav, nez miliony ruznych typu zprav spis neopakovanych.

Namisto toho, aby to tazatel vyresil cilene - zpracovanim vlastnich souboru vlastnim zpusobem (uzitim maximalne jedne transportni knihovny), tak hleda zazracny meta nastroj, ktery magicky napravi to, co sam neumi. Ale holt takova univerzalita stoji podstatnou cast vykonu. Ve vysledku tedy vznikne priserne slozity proces, s desitkama zavislosti, zerouci nasobne vice prostredku a vyzadujici extra spravu az se to rozbije.. jen proto, aby jste zeditoval kus primitivne organizovaneho textaku :-)

Re:JSON processor
« Odpověď #8 kdy: 05. 07. 2022, 21:03:34 »
Jako nechapu tento dnesni pristup - chci pouzit svuj pocitac, na zpracovani svych dat, ale nechci programovat. Tak si na to najmete nekoho, kdo programovat umi, ne? Taky nechcete po uklizecce v hotelu, aby vam delala jidlo nebo odvezla na letiste.

urcite bych si na zpracovani JSONu nenajal nekoho, kdo to chce delat v C.

Vsechno je otazka nalezeni kompromisu mezi pohodlim a vykonem. A pak se casto opomiji, jakym smerem se bude skalovat - v tomto oboru bych ocekaval miliony opakovani malo typu zprav, nez miliony ruznych typu zprav spis neopakovanych.

Namisto toho, aby to tazatel vyresil cilene - zpracovanim vlastnich souboru vlastnim zpusobem (uzitim maximalne jedne transportni knihovny), tak hleda zazracny meta nastroj, ktery magicky napravi to, co sam neumi. Ale holt takova univerzalita stoji podstatnou cast vykonu. Ve vysledku tedy vznikne priserne slozity proces, s desitkama zavislosti, zerouci nasobne vice prostredku a vyzadujici extra spravu az se to rozbije.. jen proto, aby jste zeditoval kus primitivne organizovaneho textaku :-)

Ale on chce ta data ukladat, indexovat a provadet nad nimi dotazy. To se bez databaze dela tezko, pokud nechcete vytvaret vlastni databazi. V tech zde zminovanych je stovky tisic clovekohodin vyvoje a miliony hodin provozu, pri kterem se odhali chyby.

Nechapu, kde chcete usetrit vykon pouzitm C. Vetsina parseru ve vyssich jazycich je napsana v C a silne optimalizovana. Po rozparsovani jsou to nejaka slovnikova data, v dynamickych jazycich nativni typ, dobre optimalizovany. Automaticky se internuji opakujici se retezce. Prace s textovymi retezci v C je nebezpecna a casto se pouzivaji neoptimalni postupy z hlediska mista/vykonu.
« Poslední změna: 05. 07. 2022, 21:10:30 od A.P.Hacker »

Don.J

Re:JSON processor
« Odpověď #9 kdy: 05. 07. 2022, 22:46:37 »
Tak zkus ten zmiňovaný Excel :) Json umí a zbytek snad už zvládneš ... třeba nějaké to makýrko na upload dat do Mongo.

Re:JSON processor
« Odpověď #10 kdy: 06. 07. 2022, 20:15:12 »
Tak v první řadě, tazatel (já) programovat umí, ale cílový uživatel ne. Jde o zpracování různých JSON payloadů, které se sice opakují, ale i z více zdrojů, které časem přibývají. Samozřejmě co zdroj, to jiný JSON. Psát to v C s libjson je fakt mimo, protoze je potřeba připravit to zpracování rychle, a bez seg faultů. Proto hledám kompromis mezi jednoduchostí a rychlostí. Nativně v Go to mám sice ca. 30x rychlejší, ale ten kod není ideální.

Nakonec asi nejlepší nápad asi bude zkusit ten JS. To se fakt naučí každá guma (vlastní zkušenost).
Alternativně by mohl být zábavný projekt zkusit udělat vlastní interpret na zmíněné Mongo agregace.

Re:JSON processor
« Odpověď #11 kdy: 06. 07. 2022, 20:58:20 »
Nepochopil jsem, proc nesaci samotne mongo agregace?

Re:JSON processor
« Odpověď #12 kdy: 07. 07. 2022, 14:36:28 »
Pokud hledáte nějaký nástroj nebo produkt, který přímo poskytne rozhraní pro zpracování dat v JSONu, podívejte se na Kibanu (Elasticsearch), Splunk nebo Tableau.

Pokud píšete vlastní aplikaci a to univerzální zpracování JSONů má být její funkcionalita, kterou uživatelům/zákazníkům dodáváte, tak použijte to, v čem takovou aplikaci dokážete vytvořit a udržovat. Třeba bude nakonec stačit Postgres a jeho json/jsonb.

Spíš bych ale doporučil udělat krok zpátky a od svých uživatelů posbírejte use casy a konkrétní požadavky a uvidíte, co je bude splňovat nejlépe. Spíš než o to, že půjde o JSONy, bych se zaměřil na to, jak budou data skutečně vypadat a jaké operace s nimi potřebujete podporovat. Podle toho možná najdete hotové řešení, které pracuje klidně s úplně jiným formátem nebo úložištěm, ale do kterého ale dokážete data z JSONu převést.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:JSON processor
« Odpověď #13 kdy: 07. 07. 2022, 16:30:56 »
Třeba bude nakonec stačit Postgres a jeho json/jsonb.
To už tu padlo. Nechce.

Re:JSON processor
« Odpověď #14 kdy: 08. 07. 2022, 00:52:40 »
Pro zpracovani dat uzivatelem bych zkusil KNIME Analytics platform