Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Kouzelný dědeček 07. 01. 2020, 13:39:06

Název: Go Lang: DB vrstva a migrace
Přispěvatel: Kouzelný dědeček 07. 01. 2020, 13:39:06
Ahoj,
vyvíjím primátně v php a docela se mi líbí golang, ale nemůžu najít (tedy spíš se rozhodnout) pro žádnou konkrétní db vrstvu a migrace. Na svých php projektech používám Doctrinu2 a Nextras migrations, kde udělám změny v entitách a mapování, Doctrina mi vyhodí sql pro aktualizaci a to přidám jako novou nextras migraci.

Proč používám nextras migrace, když doctrina má vlastní:

Nevíte někdo o nějaké podobné alternativě v golangu? Případně co používáte vy? Prošel sem víceméně všechny migrační nástroje, či knihovny na awesome go (https://awesome-go.com/), ale víceméně žádná mi uplně nevyhovuje. Přemejšlim, že bych si napsal vlastní za pomoci knihovny darwin a nějaký cli knihovny, ale do toho se mi moc nechce :D

Co očekávám od db vrstvy... popravdě nevim. Asi by mi stačil nějakej sql builder, ale také se nejsem schopný rozhodnout. Jediný, co by mi asi trošku chybělo, by byla změna entity a následný nechání si vygenerování sql pro update schema, kuli tomu jedinému stále zvažuji orm. Jaký používáte vy sql builder, nebo orm?

Díky
Název: Re:golang - db vrstva a migrace
Přispěvatel: Idris 07. 01. 2020, 13:56:28
Já bych od použití ORM v případě Go odrazoval, ten jazyk má dost pomalou reflexi. Osobně používám v malém měřítku buď wrapper nad SQLite, ten ale vyžaduje cgo, což není zrovna ideální, nebo nověji BoltDB (ta ale není relační), nebo prostě přímo SQL. SQL builder, pokud je potřeba, bych psal vlastní, to bude rychlejší než se plácat s externí knihovnou.
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: alex6bbc 07. 01. 2020, 14:03:41
musite mit db?
nejde pouzit jiny typ uloziste?

https://github.com/dgraph-io/badger
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: Kouzelný dědeček 07. 01. 2020, 15:04:10
Možná jsem mohl zmínit, že bych rád zůstal u webového vývoje, kde si často nedokážu představit řešení bez relační nebo alespoň dokumentové db :))
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: Idris 07. 01. 2020, 15:42:09
Možná jsem mohl zmínit, že bych rád zůstal u webového vývoje, kde si často nedokážu představit řešení bez relační nebo alespoň dokumentové db :))
Jako dokumentová DB se dá použít každé KV úložiště s uspořádanými klíči, jako ta BoltDB. Jinak jak říkám, obvyklé řešení je použít standardní API a prostě se připojit k DB serveru, kde spravovat schéma přímo.
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: _Tomáš_ 08. 01. 2020, 09:24:44
zavádět zvyky z jednoho jazyka do druhé není vždy nejlepší nápad, v tomhle případě rozhodně ne. Go není s ORM zrovna kompatibilní a nebylo na to v návrhu nijak myšleno, pokud chceš ORM, máš na výběr z nepřeberného množství nástrojů nad javou, ruby a python.

Jaké pak bude mít výhody pro tebe go, když v něm budeš chtít psát jako v php? Není lepší pak již zůstat u php?
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: Kouzelný dědeček 08. 01. 2020, 09:50:07
zavádět zvyky z jednoho jazyka do druhé není vždy nejlepší nápad, v tomhle případě rozhodně ne. Go není s ORM zrovna kompatibilní a nebylo na to v návrhu nijak myšleno, pokud chceš ORM, máš na výběr z nepřeberného množství nástrojů nad javou, ruby a python.

Jaké pak bude mít výhody pro tebe go, když v něm budeš chtít psát jako v php? Není lepší pak již zůstat u php?

Jak jsem zmínil, pravděpodobně by mi stačil sql builder. Z předchozí odpovědi od Idrise jsem pochopil, že ORM v Go neni uplně ideální, tak by mě teď spíš zajímal nějakej sql builder; zatim na todle tema je jedno doporučení a to psát si vlastní. Nad ORM jsem přemejšlel jen z toho důvodu, že by mi to zjednodušovalo udržování db, ale to neni nic nutnýho.

K tomu tahání zvyků z jednoho jazyka do jinýho, proto jsem tady, abych se zeptal :)
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: _Tomáš_ 08. 01. 2020, 13:43:47
pokud ti nestačí výchozí database/sql (https://golang.org/pkg/database/sql/) a ani poměrně slušná extenze https://github.com/jmoiron/sqlx, můžeš použít https://github.com/Masterminds/squirrel


Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: Tomáš Procházka 08. 01. 2020, 15:00:17
pokud ti nestačí výchozí database/sql (https://golang.org/pkg/database/sql/) a ani poměrně slušná extenze https://github.com/jmoiron/sqlx, můžeš použít https://github.com/Masterminds/squirrel
Souhlas, jen bych doplnil, že sqlx a squirrel se vzájemně nevylučují  ;)
A po migrace mohu doporučit https://github.com/golang-migrate/migrate
Název: Re:Go Lang: DB vrstva a migrace
Přispěvatel: Kouzelný dědeček 21. 01. 2020, 10:27:55
Ahoj,
děkuji všem za vaše příspěvky, nakonec jsem se tedy rozhodl použít pro migrace migrate a pro sql sqlx.

Udělal jsem si dva adresáře s migracema, jeden obsahuje migrace struktur i základních dat a druhý dummy data. Na vývojovym prostředí tedy pouštim navíc ještě migrace z dummy dat. Tim tedy migrace splňujou veškerou mnou požadovanou funkcionalitu (s drobnym scriptem) a já jsem spokojenej :D