Understanding Our World image

Understanding Our World

Rel is not a procedural language. It is a relational declarative language with roots in logic programming. Rel goes far beyond a simple type system by allowing you to define the rules your creations have to obey.  Definitions are not methods that turn input into output, but rather rules that can be evaluated in both directions.

Is Database Administrator Still a Good Job? image

Is Database Administrator Still a Good Job?

The job of a database adminstrator is evolving, just as almost all careers in IT. DBAs are often the ones closest to the task of capturing the real world. This is arguably the base of the entire application stack. If you model is wrong, your data will be wrong, your predictions will be wrong, your decisions will be wrong. It all falls apart without the right model. It falls apart without those people who know what to capture and in what detail, what to connect and in what ways. That's the DBA.

Good Neighbors image

Good Neighbors

Rel supports relations as arguments, recursion, variable arguments and inlined definitions that reference other inlined definitions. These features give you tremendous power so you can express your business logic clearly and concisely. Power that was typically reserved for procedural languages is now available in your models and queries.

Playing With Legos image

Playing With Legos

Do you remember playing with legos as a kid? This is what our query language Rel feels like. You don’t have to write 300 lines of SQL code and go absolutely insane trying to debug or handle it all in your head. You make progress with every little definition. You can divide and conquer the problem by building small pieces, combining them together and creating something that is greater than the sum of its parts.

Tic-Tac-Toe: Knowledge Extraction From Imperative Code image

Tic-Tac-Toe: Knowledge Extraction From Imperative Code

Applications implemented in imperative programming languages encode vast amounts of human knowledge at their core, but the essence of the application logic is often obscured by the imperative nature of the implementation language.

Loopy Lattices and Recursion image

Loopy Lattices and Recursion

Our semantic optimizer is a query optimizer that uses the knowledge of user constraints, the knowledge of the data at hand, and the knowledge of mathematics to find an algorithm to answer a query in the fastest way it can. Here we touch upon just one feature of the semantic optimizer: recursion.