Why (Graph) DBMSs Need New Join Algorithms: The Story of Worst-case Optimal Join Algorithms

"Clean" Code, Horrible Performance

Give Me Flexibility and Give Me Types

Issue #340

2/28/2023

{{PreviewText}} 

Hey-ya
Another day, another issue.

====================================================================

Today's Sponsor: Could be you!

Are you or your company interested in sponsoring the newsletter? Feel free to reach out to me by replying to this email or clicking the link above.

====================================================================

Why (Graph) DBMSs Need New Join Algorithms: The Story of Worst-case Optimal Join Algorithms

Published: 22 February 2023
Tags: algorithms, database, math, sql


Semih Salihoğlu dives into what Worst-case Optimal Join (wcoj) algorithms are, how they can be useful in databases management systems, and how they're implemented in the Kùzu database.
Some highlights:

  • Wcoj algorithms propose that queries involving complex “cyclic joins” over many-to-many relationships should be evaluated column at a time instead of table at a time
  • "Worst-case optimal" means that the worst-case runtime of these algorithms meets a known lower bound for the worst-case runtime of any join algorithm
  • Kùzu generates plans that mix binary joins and wcoj-style multiway intersections


====================================================================

"Clean" Code, Horrible Performance

Published: 28 February 2023
Tags: c++, philosophy, rant


Casey Muratori discusses the idea of "clean code" and how it can affect the performance of a program.
Some highlights:

  • Casey argues that "clean" code is not very performant
  • Uses an example to demonstrate his point
  • I feel like it's pretty obvious that there's often a tradeoff between performance and "clean" code, but still an interesting perspective to read about


====================================================================

Give Me Flexibility and Give Me Types

Published: 21 February 2023
Tags: design patterns, oop, philosophy, type theory


Xander explains the advantages of being able to build up types in parts in a number of different languages.
Some highlights:

  • Composition is multiple inheritance
  • Structural typing is much like the name says: the ability to use the structure of data as a type (like TypeScript)
  • Type intersections = good


-

How did I do?

* Amazing
* Articles not relevant to me
* Articles were relevant, but badly written
* Summaries told me everything I wanted to know
* I like turtles

Want to help?

Thank you for reading! If you enjoy the newsletter, I would really appreciate you helping me spread the word by forwarding this to your friends and colleagues or sharing it on social media! Get cool stuff for your referrals using your link https://abyteofcoding.com.

Your referrals:


If you want to discuss or comment on this issue, head on over to this page at A Byte of Coding. You can also subscribe there if you're new!

Have comments or feedback? Just reply to this email or hit me up on Twitter @AByteOfCoding.

Email landed in your promotions tab? Please move it over to primary so you don't miss the latest issues in the future.
Thanks for your Support! 

Big thanks to all of the Patreon supports and company sponsors. If you want to support the newsletter you can checkout the Patreon page. It's not necessary, but it lets me know that I'm doing a good job and that you're finding value in the content.


Stats (updated daily)

Sent: 3051

Opens: 1430

Clicks: 430

Link Clicks Clicks % Unique Clicks Unique Clicks %
Why (Graph) DBMSs Need New Join Algorithms: The Story of Worst-case Optimal Join Algorithms 61 18.43% 91 22.98
"Clean" Code, Horrible Performance 161 48.64% 180 45.45
Give Me Flexibility and Give Me Types 109 32.93% 125 31.57

Previous

Back to Issues

Next