Learning from our journey building TypeDB & TypeQL.
Introducing the Type Theory and Polymorphic Foundations of TypeDB
When we look at the evolution of databases in the last 40 years since relational algebra and SQL, even though there has been incredible progress in performance and operational capabilities, databases have yet to provide more powerful abstractions to express more advanced logic. Database models have failed to keep up with the rapid evolution of programming languages, and modern applications must use complex layered architectures to manage data as a result.
What it means to be more strongly-typed than SQL and NoSQL
Unlike existing database paradigms, TypeDB is designed based on modern ideas from type theory. If you want to learn how this works in detail, you may be interested in our article on type-theoretic databases in our learning section. In this post, we will discuss a crucial difference between TypeDB and other database paradigms, which is a direct result of these type-theoretic foundations of TypeDB. But don’t worry, we won’t assume any familiarity with type theory and will keep our discussion as high level as possible!
The need for subtyping and polymorphism in databases
In this article, we’ll explain how a new revolution in databases overcomes the limitations of relational, document and graph databases by using subtyping and polymorphism — core object-oriented (OO) programming principles — to create higher abstractions and achieve greater expressivity.
The age of AI is upon us — where are the smart databases?
What if you could ask sophisticated questions without having to tell the database how to answer them? In the same way AI-powered code generation tools can improve developer productivity, so can an AI-powered database.
Inheritance and polymorphism: where the cracks in SQL begin to show
Polymorphism can be one of the most challenging things to model in a database. Not only do you want your database to be performant, you also want it to feel intuitive so that queries you write make sense and are simple to maintain, and polymorphic data can easily mess up that balance if you don’t take the time to consider how best to implement it.