sqldb+python, Oracle APEX vagy más alternatíva

Fórumok

Kezdem a megoldandó problémával:

1) Tárolni akarok egy halom adatot. Főleg számok, és vannak elnevezések (kevés, nem hosszú, 1-3 szóra gondoljatok). Mennyiségileg: tárhely szempontjából nem számítok sokra, de mennyiségileg igen (nem annyira sok, hogy a számítógépnek gondot okozzon, kézzel bevinni viszont kemény lesz). Az adatok kapcsolata alapján relációs adatbázisban könnyen le lehet képezni mindet.

2) Mindenféle paraméterek szerint le szeretnék kérdezni az adatokból dolgokat. Főleg megszámlálni így-úgy csoportosítva és szűrve, illetve összeadni dolgokat (csoportosítva és szűrve). Erre szintén az SQL jó iránynak tűnik.

3) Az adatokat Google Drive-on, itthon a NAS-on vagy itthon valami háttértáron tárolnám. Hozzá szeretnék férni (adatbevitel illetve lekérdezés) a laptopomról, Linux alól és Windows alól is. Esetleg a másik laptopomról.

Erre a feladatra (tárolás + lekérdezés) keresek eszközt.

Nem kell az összes számot eltárolnom első lépésben. Vannak dolgok, amit nekem kell leolvasni és kézzel bevinni. Ezek így is maradnak majdd. Ezek részhalmaza is elég az induláshoz, de rendes elemzéshez minden típusú mérésre szükségem lesz, szóval ezekből nem lesz elég a kicsi részhalmaz (minden kellene, vagy számos kis részhalmaz). Vannak olyan mérések, amik napi egy adatot adnak, vannak olyanok, amik napi néhány tizet. Ezek mellett jelenleg szemmel leolvasok és kézzel leírok olyan dolgokat is, amik napi 0-5 esetben fordulnak elő. Ha be tudnám tölteni a háttérből érkező nyers adatokat (nem is a betöltés a kihívás itt, hanem utána kéne keresni, hogy elérhetőek-e, honnan és hogyan mondjuk csv-ben), akkor különböző képletekkel tudnék számolni pár olyan dolgot, amit most egyszerűen leolvasok és rögzítek. (Itt is a képletek megalkotása és tesztelése a nagyobb feladat). Ezeknek akkor állnék neki, ha tudnám, hogy milyen eszközben fogom ezt csinálni.

Első körben táblázatban (Google sheets) kezdtem el valamennyi adat rögzítését, de látszik, hogy ez így nem fog menni. Az adatok tárolása még csak-csak (most kézzel csinálom, kikeresem azt, ami érdekes, és kézzel leírtam pár feltétel esetén az eredményeket - de főleg a lekérdezés oldaláról ez így nagyon fapados.

A következő ötletek merültek fel bennem, írjátok meg nyugodtan, mit gondoltok ezekről:

1) Google Sheets-ben tárolás, lekérdezés ismeretlen módon (nem tudom, rá lehet-e egy google sheets-re kapcsolódni mint adatforrásra, ha nem, akkor esetleg valami formulákkal esetleg makrókkal telipakolt oldalon jöhetne ki az adat). Így indultam el, de félek, hogy ez zsákutca. Ahhoz, hogy értelmesen működhessen, sokkal több formulára lenne szükség. Meg talán makrózásra, amivel semmi tapasztalatom nincs. Esetleg Google Sheets helyett mehetne egy Libreoffice Calc táblázat Google Drive-on.

2) SQLDB-be az adatokat, és mondjuk Python-ból lekérdezni. Még nem találtam ki, hogyan tenném be az adatokat (esetleg csv és pythonnal beolvasni, feldolgozni, adatbázisba tölteni). A fapadosság nem tragédia, viszont az SQLDB-t nem ismerem, fogalmam sincs, hogy lehet pl. Windows-ra telepíteni. Gondolom, az menne itt, hogy NAS-on (vagy Google Drive-on) van az adat fájl, és akár Win, akár Linux van előttem, a scriptjeim fel tudnak tölteni új adatokat, vagy lekérdeznek.

3) Oracle XE adatbázis és APEX. Az egyik pozitívum, hogy mindkettővel van tapasztalatom (bár több, mint 10 éve nem használtam ezeket, szóval azóta biztos változott ez-az). A másik pozitívum az, hogy ha valahol fut az Oracle és az APEX, akkor csak simán böngészőből rá tudok kapcsolódni és lehet piszkálni. Illetve a webes felületen szép lekérdezéseket lehet összerakni, grafikonokkal, stb. Negatívum: nem tudom, hova telepíthetném. A rendes laptopom ki-be van kapcsolva, néha Windows, néha Linux indul, kicsi a hely ezen. A másik sokszor napokon át fut Windows-zal, de fut rajta egy mérő szoftver, ami eléggé leterheli és csak 4G a memóriája. Van még Raspberry Pi, de nem számítok rá, hogy Raspbian alatt elfutna az Oracle.

4) Libreoffice-nak van valami adatbáziskezelős része is. Ugye? Sose használtam.

Az ideális az lenne, ha
- valami központi helyen lehetne tárolni az adatokat (NAS, Google Drive)
- vagy valami a laptopoktól független helyen (pl. Raspberry Pi vagy második laptop) futó program kezelné az adatokat és adna ehhez egy webes felületet (mint az APEX)
- vagy valami már most is telepített (pl. Libreoffice) program kezelné az adatokat és adna egy kényelmesen használható felületet
- nem ártana, ha vagy már ismert technológián/nyelven (Oracle, APEX, Python, SQL) alapulna az egész, vagy legalább ne kelljen hosszú időt eltölteni a beletanulással.

Ha van valami és csak Linux alatt fut, az nem ideális, de OK. Csak Windows-t nem szeretném, de ha nagyon jó minden más szempontból, akkor elképzelhető.

Hozzászólások

Ha hosszú távú felhasználásra tervezed a funkciót, akkor esetleg belefér az elején egy kis tanulás.

Én megvizsgálnám a Python3, pandas, numpy kombinációt. A pandas-zal nagyszerűen lehet adattömböket, táblázatokat  kezelni; egyidejűleg teljes sorokon/oszlopokon lehetséges matematikai és egyéb műveleteket végezni, a sorokat/oszlopokat kombinálni és újakat előállítani más sorokon végzett műveletek kimenetének függvényében stb.  A pandas nagyon jól kezel midenféle csv-fájlt, és ugyan SQL DB-ből is át lehet tölteni bele adatokat, de sokkal  gyorsabb a feldolgozás, ha az adatok eleve csv-ben vannak.

A csv fájlokat ráadásul nagyon jól lehet tömöríteni, én a bzip2 formátumot használom, amit a Pythonban transzparensen tudok kezelni, azaz úgy, mintha nem is lenne tömörítve ( zip, gzip ugyanígy).

Viszont a pandas (és egy minimális numpy) megismeréséhez minimum kell 1-2 hónap tanulás ( de minden fenn van a neten, vannak könyvek és van stackoverflow). Na jó, az elinduláshoz elegendő 1 hét is...