Tag Archives: nosql

Query Optimizers are made of sand

I’ve written a ton of SQL and Cypher queries over the last 20 years…and I’ve rewritten those queries as stored procedures more times than I can count. The issues with the expressivity of the query language and the ability of the query optimizer to “do the right thing” have been around longer than my career. I’ve written about this problem before. I went so far as to completely give up. In RageDB I let the developer write the query in a programming language directly. Skipping the “middle man” and letting the user be the query optimizer. Because in the end… this is what always happens. Well almost always.

Continue reading
Tagged , , , ,

Getting a Mascot

Everything cool deserves an awesome mascot. Postgres has an elephant named Slonik. MySQL has a dolphin named Sakila. Linux has a Penguin named Tux. ScyllaDB has a sea monster. RedPanda has a… you guessed it, a Red Panda. Zig was too cool for one mascot so they have two “Ziguanas“. PHP has an elephant too. Rust has a Crab named Ferris. TerminusDB has a cowduck. Docker has a whale, but it was almost a giraffe. One of the most famous mascots around is the GitHub Octocat named Mona. Go has a Gopher and they even have a website where you can make your own gopher, how cool is that?

Continue reading
Tagged , , ,

Let’s build something Outrageous – Part 25: Dates in C++ and Faster Imports 

Back in February, we added the ability to load a CSV file and alter the contents while importing it. We also added Date support to RageDB using a Lua library. This was a masterful job of copy and paste and got us lots of functionality very quickly. When we timed the import for LDBC SNB SF10 it came in at 28 minutes. Which wasn’t bad, but wasn’t great. Let’s try to speed that up today.

Continue reading
Tagged , , , , ,

Let’s build something Outrageous – Part 24: Permissions and Multiple Graphs

Typically we want to Reduce, Reuse and Recycle to help the environment. But today we are going to Reduce, Reuse and Recycle the Lua Sandbox Environment to give us two additional sets of permissions. The first is “Read Write” in which a user can read and write to the database but cannot create new types of nodes or relationships or data types. The second is “Read Only” which does what it sounds like.

While we’re here, we’re going to one graph, two graph, rage graph, blue graph our way to multi database support. Let’s jump in:

Continue reading
Tagged , , , , , ,

Let’s build something Outrageous – Part 23: Sandboxing

The idea of using a programing language as the way to write queries against the database makes many security folks hyperventilate. In order to lower their heart-rate and slow their breathing we have to limit the queries using a technique known as “sandboxing“. The Sol2 library we are using in RageDB lets us create an “environment” where our queries will run. Let’s see how we go about doing this.

Continue reading
Tagged , , , , ,

Let’s build something Outrageous – Part 22: Seeing Results

“That a lie which is half a truth is ever the blackest of lies” — Alfred Tennyson. Before embarking on the journey of achieving something great, you are often told to imagine having already done it. This is the pseudo scientific belief that visualizing a positive outcome helps one achieve it. It propelled “The Secret” to sell 30 million copies worldwide. However, it isn’t the outcome we are supposed to be fantasizing about, but rather the execution of the actions required to accomplish our goal.

Continue reading
Tagged , , , , , ,

Let’s build something Outrageous – Part 21: Overloading

Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le loisir de la faire plus courte. I would have written a shorter letter, but I did not have the time. Written by Blaise Pascal is often misattributed to Mark Twain. It reminds us to try to be brief. Too many people never learn this.

Continue reading
Tagged , , , , ,

Let’s build something Outrageous – Part 20: I can’t live without Roaring Bitmaps

Valentine’s Day was earlier this week, maybe you took your significant other to dinner, sent flowers or candy to your crush, even bought a card for that special someone. I bet however you didn’t profess your love to your favorite software library. I did. I love Roaring Bitmaps. Like Mariah Carey, I can’t live without it, so I won’t. I added Roaring Bitmaps to RageDB.

Continue reading
Tagged , , , , ,

Let’s build something Outrageous – Part 19: LDBC Short Queries

The folks who build the database are not the same folks who use the database and that causes problems. It has been my number 1 complaint for the past decade or so. People building features in isolation can’t see the forest for the trees and the end user experience suffers. I ran into this video from Molham Aref where he puts it quite nicely:

Continue reading
Tagged , , , , ,

Let’s build something Outrageous – Part 18: Load CSV

As much as we all love graphs, the rest of the world hasn’t quite caught on yet. They are still sending CSV files to each other like some sort of cavemen. We have a few options for dealing with them. One is to convert them to a specific file format and bulk load them into the database as fast as possible. Another is to stream them one row at a time as-is and potentially do some transformations on the fly as needed and turn each row into one or more pieces of data. Today we’re going to go with option 2.

Continue reading
Tagged , , , ,