Articles

RavenDB Python client API stable release

We have just released a new stable release of the RavenDB Python client API. This puts the Python client API for RavenDB on the same level as our other clients, including support for subscriptions, cluster wide transactions, compare exchange, conditional loading, and much more. We also improved the ergonomics of the API and integration with […]

C# as a System Language recording

In just 20 minutes, I try to condense ~15 years of working on a database engine in C# / .NET and show how you can use C# to build system software. I think it ended up being really nice:

RavenDB indexing: exact()

When you search for some text in RavenDB, you’ll use case insensitive search by default. This means that when you run this query: You’ll get users with any capitalization of “Oren”. You can ask RavenDB to do a case sensitive search, like so: In this case, you’ll find only exact matches, including casing.  So far, […]

Join us at QCon San Francisco next week

We’ll be in QCon San Francisco next week (Oct 24 – 26), and we’ll be very happy to meet you in person. We are going to show off some of the new features in RavenDB 5.4, discuss what is on the roadmap for RavenDB and present some really cool aspects of what you can do […]

Production postmortem: Do you trust this server?

A customer called us with a problem. They set up a production cluster successfully, they could manually verify that everything is working, except that it would fail when they try to connect to it via the client API. The error in question looked something like this: CertificateNameMismatchException: You are trying to contact host rvn-db-72 but […]

Production postmortem: The missed indexing reference

RavenDB has a really nice feature, it allows you to index data from related documents. Consider the following document structure: We have tickets, vehicles, and users, and we want to issue a search on all the tickets issued to Joe. Leaving aside whether this is the proper way to handle this, here is what the […]

The subtleties of proper B+Tree implementation

I mentioned earlier that B+Trees are a gnarly beast to implement properly. On the face of it, this is a really strange statement, because they are a pretty simple data structure. What is so complex about the implementation? You have a fixed size page, you add to it until it is full, then you split […]

Reducing complexity with a shift in thinking

I love B+Trees, but they can be gnarly beasts, with the number of edge cases that you can run into. Today’s story is about a known difficult place, page splitting in the tree. Consider the following B+Tree, showing a three-level tree with 3 elements on each page. Consider what will happen when we want to […]