PostgreSQL vs MongoDB
A Pató Pál projekt esetleges átalakítása kapcsán vetődött fel bennem a kérdés: most a text mellett postgresql-be tolom a logokat, partícionált táblába. Mivel update nincs az adatokon, az input is megfelel egy rdbms-ben tárolható struktúranak (azonosítók, időpontok, és egy szabadon kitölthető szövegmező), hátrányát eddig nem láttam a postgresql-nek, előnyét igen.
Viszont eddig csak tároltam a logokat, most esnék neki újra a webes felületnek, benne keresésekkel.
2-2.5 millió soron már nem túl gyors. (Nem vészes, de 4-5mp/lekérdezés)
Betöltve mongo-ba, látszólag sokkal gyorsabb a keresés. Legalábbis az első pár rekordig.
Gondolom, a teljes keresés azért ennyire nem lenne gyors, de ezt csak egy .count() segítségével tudtam megnézni, az meg gyanítom, valami cache-ből dobta vissza azonnal, hogy adott feltételre hány találat volt.
(Select count(*) from syslog where message like '% DPT=22 %'; vs db.syslog.find({"message": /.* DPT=22 .*/}))
Kérdés: tud valaki jó indokot az adatbázis cseréjére? Azon túl, hogy az rdbms nem erre van kitalálva.
Postgresql mellett szól, hogy sql-ben nem vagyok teljesen kezdő, ha parancssorból akarok matatni az adatokon, egy selectet egyszerűbb begépelni, mint egy mongo lekérdezést, egy join egyszerűen leírható két tábla közt, olvasható is, míg mongo-ban a $lookup a millió egymásba ágyazott json adattal... Másnak lehet, hogy könnyű olvasmány, nekem kifolyik a szemem a sok {} párostól :)
Mongot viszont egyszerűbbnek tűnik elérni pythonból.
Milyen szakmai érv lenne a mongo mellett?
Mi az, amiben a mongo jobb lehet?
■ Viszont eddig csak tároltam a logokat, most esnék neki újra a webes felületnek, benne keresésekkel.
2-2.5 millió soron már nem túl gyors. (Nem vészes, de 4-5mp/lekérdezés)
Betöltve mongo-ba, látszólag sokkal gyorsabb a keresés. Legalábbis az első pár rekordig.
Gondolom, a teljes keresés azért ennyire nem lenne gyors, de ezt csak egy .count() segítségével tudtam megnézni, az meg gyanítom, valami cache-ből dobta vissza azonnal, hogy adott feltételre hány találat volt.
(Select count(*) from syslog where message like '% DPT=22 %'; vs db.syslog.find({"message": /.* DPT=22 .*/}))
Kérdés: tud valaki jó indokot az adatbázis cseréjére? Azon túl, hogy az rdbms nem erre van kitalálva.
Postgresql mellett szól, hogy sql-ben nem vagyok teljesen kezdő, ha parancssorból akarok matatni az adatokon, egy selectet egyszerűbb begépelni, mint egy mongo lekérdezést, egy join egyszerűen leírható két tábla közt, olvasható is, míg mongo-ban a $lookup a millió egymásba ágyazott json adattal... Másnak lehet, hogy könnyű olvasmány, nekem kifolyik a szemem a sok {} párostól :)
Mongot viszont egyszerűbbnek tűnik elérni pythonból.
Milyen szakmai érv lenne a mongo mellett?
Mi az, amiben a mongo jobb lehet?
Azt hiszem, tárgytalan
Viszont az is igaz, hogy a postgres tud "... like ..."-t, a pymongo úgy fest, csak regex keresésre képes:
MongoDB cli:
speedtest.syslog.find({"message":/.* DPT=22 .*/})
Pymongo:
speedtest.syslog.find({"message": {"$regex":".* DPT=22 .*"}})
Elég jelentős különbség van ezek közt is, ha az így visszaadott sorok számát kérem. De ugye ez regex, nem sima like.
Ha találnék a like-nak megfelelőt a pymongo-ban, akkor lenne értelme tovább rágódni a dolgon, így nem nagyon.