Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Tomáš Procházka 04. 07. 2022, 22:33:39

Název: Jednoduché zpracování JSON
Přispěvatel: Tomáš Procházka 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?
Název: Re:JSON processor
Přispěvatel: Idris 04. 07. 2022, 22:44:48
něco, v čem zpracovat JSON. Nějaký deklarativní jazyk
SQL 2016
Název: Re:JSON processor
Přispěvatel: RDa 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 :)
Název: Re:JSON processor
Přispěvatel: Tomáš Procházka 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.
Název: Re:JSON processor
Přispěvatel: Tomáš Procházka 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.
Název: Re:JSON processor
Přispěvatel: RDa 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.
Název: Re:JSON processor
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 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.
Název: Re:JSON processor
Přispěvatel: RDa 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 :-)
Název: Re:JSON processor
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 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.
Název: Re:JSON processor
Přispěvatel: Don.J 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.
Název: Re:JSON processor
Přispěvatel: Tomáš Procházka 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.
Název: Re:JSON processor
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 06. 07. 2022, 20:58:20
Nepochopil jsem, proc nesaci samotne mongo agregace?
Název: Re:JSON processor
Přispěvatel: Michal Stanke 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.
Název: Re:JSON processor
Přispěvatel: Idris 07. 07. 2022, 16:30:56
Třeba bude nakonec stačit Postgres a jeho json/jsonb.
To už tu padlo. Nechce.
Název: Re:JSON processor
Přispěvatel: Ziktofel 08. 07. 2022, 00:52:40
Pro zpracovani dat uzivatelem bych zkusil KNIME Analytics platform
Název: Re:JSON processor
Přispěvatel: mikrom 08. 07. 2022, 11:24:09
Cílovka jsou, řekněme neprogramátoři, co však ví co je JSON a umí psát funkce třeba v excelu
Ked vedia co je JSON a vedia pisat funkcie v exceli vo VBA mozu pouzit niektory z tychto modulov:
https://github.com/eklam/VbsJson
https://github.com/VBA-tools/VBA-JSON
Název: Re:JSON processor
Přispěvatel: Tomáš Procházka 08. 07. 2022, 14:24:44
Nepochopil jsem, proc nesaci samotne mongo agregace?

Hlavně proto, že jak se provede agregace, tak se výsledek vytáhne a původní data zahodí.
Je tam zdržení v tom, že se data musí nahrát, agregovat a stáhnout z MongoDB serveru.
Také běh samotného MongoDB serveru (a jakékékoliv jiné navrhované DB) mi přijde zbytečný. Aktuálně ideální by bylo mít něco jako `jq`, ale s Mongo syntaxí. To proto, že už hodně těch agregací je napsáno.
Na druhou stranu je mongo syntaxe dost ukecaná a opakující se. Proto se mi líbil Jsonnet, protože umožňuje definovat funkce, a je tak nějak celý navržen pro práci s JSON daty. Ale je oproti té současné opičárně s MongoDB 4x pomalejší.
Název: Re:JSON processor
Přispěvatel: ondra05 08. 07. 2022, 15:47:20
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 :-)

C rozhodně není synonymem pro výkon. Jsou jiné, lepší jazyky které se výkonem C vyrovnají.
Název: Re:JSON processor
Přispěvatel: Idris 08. 07. 2022, 16:09:41
C rozhodně není synonymem pro výkon. Jsou jiné, lepší jazyky které se výkonem C vyrovnají.
Jo, asembler.
Název: Re:JSON processor
Přispěvatel: Ink 08. 07. 2022, 18:22:09
C rozhodně není synonymem pro výkon. Jsou jiné, lepší jazyky které se výkonem C vyrovnají.
Jo, asembler.

Nebo stroják naťukaný z paměti v hexa kódu, ten je taky lepší.
Název: Re:JSON processor
Přispěvatel: Idris 08. 07. 2022, 18:32:58
C rozhodně není synonymem pro výkon. Jsou jiné, lepší jazyky které se výkonem C vyrovnají.
Jo, asembler.
Nebo stroják naťukaný z paměti v hexa kódu, ten je taky lepší.
To jsem dělával zamlada pro Z80 :)
Název: Re:JSON processor
Přispěvatel: neregistrovany 09. 07. 2022, 10:25:35
Xpath 3.1 podporuje JSON a nebo mrknete na JSONiq

Treba Xidel umi oboji...
Název: Re:JSON processor
Přispěvatel: Tomáš Procházka 09. 07. 2022, 19:11:28
Xpath 3.1 podporuje JSON a nebo mrknete na JSONiq

Treba Xidel umi oboji...

Určitě se podívám, děkuji :) I kdyby to třeba nesedlo na tenhle problém, tak to vypadá jako něco, o čem je dobré mít povědomí.
Název: Re:JSON processor
Přispěvatel: mikrom 09. 07. 2022, 22:18:53
Mam otvorenych 30 tabov v Chrome a 2 taby vo Firefoxe a to 3.9 GiB pamate. Co to mas za OS ?