Er is eigenlijk niks mis met SQL, was bij een conferentie waar zelfs de bedenkers van Hadoop voor een bepaalde applicatie een hele mongodb onrelationele database hadden opgezet, maar toch teruggingen naar relationele database met nosql achtige uitbreidingen omdat het anders gewoon niet werkte
.
Ik vind SQL in vergelijking met de programmeertalen die voor Python kwamen (uitgezonderd Pascal) juist erg makkelijk. Dit even afgezien van het feit dat het niet echt een programmeertaal is.. maargoed, ik ken er inmiddels zoveel, van graphql tot plc programma's dat het begrip 'programmeertaal' niet echt meer iets anders betekent dan iets om een machine instructies te geven.
Wat voor mij het makkelijkste werkt bij complexe SQL queries is om simpel te beginnen en van 'achter naar voor' te werken. Dus stel je wilt uiteindelijk in je queryresultaat de usernames die in een topique reageren dan moet je natuurlijk het databasemodel wel kennen.
Als je geluk hebt en de database is door een programmeur, niet door een databaseadministrator ontworpen, dan heb je eigenlijk altijd wel een surrogate key voor elk record. Zoals hier op FOK! elke post een postid heeft
. En waarschijnlijk ook een topiqueid en een userid. Dus dan begin je met alle posts te selecteren van een bepaald topiqueid, en daarna werk je met een inner join op userid naar de user tabel waar je waarschijnlijk weer de naam zult vinden van de users. Dan nog even een distinct er op en wat voor sort je dan ook wilt, en klaar.
Mbt de data zsm uit de DB halen en er dan met python wat mee doen. Dat is leuk voor kleine databasejes, maar zo goed als alle SQL servers zijn veel beter in dat soort 'heavy lifting' dan python ooit zou kunnen omdat SQL gebruik kan maken van indexen en out of the box al meestal een gedeelde query cache heeft. Sommige mensen zijn zelfs zo dom om via python uiteindelijk een soort subquery te gaan schrijven (iets wat in 2003 misschien okay was, nu niet meer).
Nu zijn er voor python ook ORMs (object relactional mappers) beschikbaar zodat je nooit meer een sql query hoeft te schrijven
. Zelf ben ik ERG tevreden over pony ORM.
https://ponyorm.com/ dan kan je iig nadat je je databasemodel hebt uitgelegd in een aantal classes je python code gewoon schrijven en pony vertaalt dat naar mysql, sqlite of postgresql.
Als je dan je database nabouwt op je locale machine met fake data, en die queries dan weer opslaat met de debugger mode van pony dan maakt ie er zelf een fatsoenlijke query van (zelfs geoptimaliseerd in sommige gevallen). Vroeger kon je dat zelfde ook doen met access.. dan maakte je complexe dingen door die lijntjes aan elkaar vast te slepen en dan maakte je daar modificaties in in de query editor
.
Als je complete programma's in SQL schrijft dan ben je wel gek als je niet views gebruikt voor de querydelen die je vaak gebruikt, en stored procedures voor bewerkingen die je vaak moet uitvoeren. Postgresql heeft zelfs materialized views (dat zijn eigenlijk gewoon tabellen die gevuld worden met de uitkomst van een query en met een refresh commando ververst kunnen worden);
Van alle dingen die ik heb geleerd op mijn informatica-opleiding (en ja daar zat pascal en c++ programmeren in ) heb ik nu dagelijks nog het meeste aan dat ik destijds ook SQL heb geleerd.
En verder; als je bij een bedrijf werkt waar je dit soort dingen op FOK! moet vragen ipv aan je collega's kunt/durft te vragen.. dan werk je voor het verkeerde bedrijf
[ Bericht 3% gewijzigd door Maanvis op 07-10-2017 03:16:39 ]