Jednoduchá NoSQL databáze pro Python

Jednoduchá NoSQL databáze pro Python
« kdy: 21. 05. 2024, 14:40:59 »
Potřebuju často v Pythonu ukládat někam data, třeba v rámci data mining atp. V Pythonu jsem používal SQLite, SQAlchemy, zkoušel jsem TinyDB a obyčejné soubory.

Potřebuju tedy ukládat data ideálně jako dictionaries, třeba http response stažené z nějakého API.


- SQLite - je roztomilá databáze, ale bez použití SQAlchemy mi přijde práce s tím docela opruz

- SQLAlchemy - tohle je docela dobrý, ale pořád vidím jako nevýhodu to, že se musím párat s vytvářením entitních tříd, já potřebuju prostě jen uložit dictionaries, nechce se mi štráchat s vytvářením sloupce pro každý field v jsonu

- TinyDB - Vychvalovaná db, dají se v tom dělat queries nad těmi uloženými dictionaries, ale za mě to je nepoužitelné, je to strašlivě ale strašlivě pomalé, neumím si představit co bych v tom ukládal že by mi ta pomalost nevadila

Takže co používám já je Pickle a soubory v kombinaci s LockFile knihovnou (schválně neřeknu k čemu potřebujete lockfile).
Tohle se mi nejvíc osvědčilo, je to doclea rychlé a jednoduché. Nevýhoda je, že se všechno musí načíst nejprve do paměti.

No takže co by se mi líbilo, je něco jako je TinyDB, tzn. uložím si prostě dictionary, a můžu potom dělat i queries. Jenže jak říkám, TinyDB je pro ty queries nepoužitelně pomalá, to už si raději načtu všechno do memory a projedu si to ve foreach abych našel co potřebuju.

Na mojem os. počítači dobrý, ale někde v cloudu kde memory je max třeba 2GB už to má slabá místa.

Nemáte nějaký tip? A ať to nemusí ideálně běžet v Dockeru, prostě keep it simple. Něco jako je SQLite, v Céčku psané, ale aby to bylo jako Document DB, tzn. key value pairs, jako value dictionary a umožňovalo to dělat queries.
« Poslední změna: 21. 05. 2024, 14:46:39 od registrovany123 »


mikrom

  • ****
  • 357
    • Zobrazit profil
    • E-mail
Re:Jednoduchá NoSQL databáze pro Python
« Odpověď #1 kdy: 21. 05. 2024, 15:14:34 »
..
- SQLite - je roztomilá databáze
..
nechce se mi štráchat s vytvářením sloupce pro každý field v jsonu
..
a preco nemozes cely JSON ulozit do jedneho textoveho stlpca ?

Re:Jednoduchá NoSQL databáze pro Python
« Odpověď #2 kdy: 21. 05. 2024, 16:52:08 »
Taky me napadly JSON funkce v SQLite, treba by tim sly delat i querries nad obsahy tech dictionaries ulozenych jako JSONB v jednom sloupci? Viz https://www.sqlite.org/json1.html

Alternativne treba napr. Mongita ktera "je k MongoDB totez co SQLite k SQL serveru"? Viz https://github.com/scottrogowski/mongita

Re:Jednoduchá NoSQL databáze pro Python
« Odpověď #3 kdy: 21. 05. 2024, 17:00:29 »
Něco jako je SQLite, v Céčku psané, ale aby to bylo jako Document DB, tzn. key value pairs, jako value dictionary a umožňovalo to dělat queries.

https://pypi.org/project/sqlitedict/
jen ty queries to neumi, ale rychle se s tim delaji zazraky.

mikrom

  • ****
  • 357
    • Zobrazit profil
    • E-mail


Re:Jednoduchá NoSQL databáze pro Python
« Odpověď #5 kdy: 22. 05. 2024, 11:39:57 »
Něco jako je SQLite, v Céčku psané, ale aby to bylo jako Document DB, tzn. key value pairs, jako value dictionary a umožňovalo to dělat queries.

https://pypi.org/project/sqlitedict/
jen ty queries to neumi, ale rychle se s tim delaji zazraky.


To je sice zajímavá knihovna, ale vzhledem k tomu, že tam nevidím queries, nevidím point v čem je to lepší než použít pickle.

Tím že tam nejsou queries tak se to asi načítá do paměti, plus navíc tam vidím používání magicků, jako třeba že len(db) vrací počet řádků v databázi, to ten vývojář dělá nějakou jógu s kódem, od toho se držím pryč.

Nakolik to vypadá kdoví jak, nepřijde mi, že to něco zajímavého nového přináší.

Takže zůstávám hezky u Pickle, serializuju dict do souboru.
« Poslední změna: 22. 05. 2024, 11:41:48 od registrovany123 »

Re:Jednoduchá NoSQL databáze pro Python
« Odpověď #6 kdy: 22. 05. 2024, 11:42:55 »
Taky me napadly JSON funkce v SQLite, treba by tim sly delat i querries nad obsahy tech dictionaries ulozenych jako JSONB v jednom sloupci? Viz https://www.sqlite.org/json1.html

Alternativne treba napr. Mongita ktera "je k MongoDB totez co SQLite k SQL serveru"? Viz https://github.com/scottrogowski/mongita

Tohle by stálo za zkoušku, nevýhodu vidím v tom, že to asi nebude podporovat SQLAlchemy, a v minulosti se mi vypmstilo s SQLite pracovat ručně, protože tam jsou typické low level db-specific "dojebávky".


Re:Jednoduchá NoSQL databáze pro Python
« Odpověď #8 kdy: 23. 05. 2024, 07:14:42 »
musíš nainstalovat, ale nejjednodužší na toto bych řekl že je MongoDB. Sežere co jí dás a je možné jednoduše udělat vyhledávání.