Skip to content

Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.

Follow @CodeOpinion


Paging Azure Cosmos DB Query Results from .NET

I received a comment on my Azure Cosmos DB Transactions from .NET post from Onur: The thing I don’t like about Azure Cosmos DB is that it doesn’t support aggregations nor paging. This was actually some pretty good timing of this comment as I just ran into a situation of a side project that required to page through  a result set. Skip & Take It does not appear that Azure Cosmos DB supports (yet) SKIP and TAKE, which you would expect to use in order to do paging.  Because of this, you can’t implement all the same functionality you might expect. But there… Read More »Paging Azure Cosmos DB Query Results from .NET

Azure Cosmos DB Transactions from .NET

I received a comment to my Optimistic Concurrency in Azure Cosmos DB  a couple weeks ago from Jerry Goyal: Can we somehow handle the concurrency among multiple documents (transactions)? Since ETags are defined on each document, you must build your concurrency around them.  However, this made me start to wonder how to update multiple documents at the same time using their respective ETags.  Meaning you would want both documents to update together only if both of their ETags were current.  If one was valid and the other was out of date, none of the documents would update. Transactions It’s pretty obvious… Read More »Azure Cosmos DB Transactions from .NET

Optimistic Concurrency in Azure Cosmos DB

I’ve started working on new side project using ASP.NET Core.  I wanted to try a new datastore and decided to give Azure Cosmos DB a try. This project isn’t doing anything complicated but does contain enough real world use cases that can give me an idea of how the API works. Concurrency The first thing I needed to implement was how to handle concurrency.  Specifically optimistic concurrency. In an optimistic concurrency model, a violation is considered to have occurred if, after a user receives a value from the database, another user modifies the value before the first user has attempted to modify it.… Read More »Optimistic Concurrency in Azure Cosmos DB