Skip to main content

Posts

Some architectures with Cosmos DB and Azure Functions

Recent posts

Add more security to an Azure CosmosDB Account.

W e can access programmatically to Azure Cosmos DB resources to create, query, and delete databases, document collections, and documents via REST API. To perform operations on Azure Cosmos DB resources, you can send HTTPS requests with a selected method: GET, POST, PUT, or DELETE to an CosmosDB endpoint. 
Frequently we build architecture with centralized access to a persistence layer, then we won't let other applications access directly to this layer.

Suppose we have the following hypothetical scenario (see Figure 1):


Only WEB API Service with IP1 is allowed to establish connections with CosmosDB EndPoint. The others elements showed as Application are not allowed. By default we have in our CosmosDB resource the following configuration (see Figure 2) in Firewall and Virtual Networks option.


To show you how this feature works, we are going to create a WEP API with a single function (route) to retrieve some information from a CosmosDB collection. We won't create web application, …

Querying CosmosDB. Part 3

Hi guys !!!

We continue with "Querying CosmosDB" series. You can read previous parts in Part1 and Part 2.

Now we added event notes to some documents. It's means some speakers added short notes or tags to theirs events. You can download a new version of our JSON Example (JSON Example 2)

Show me please !!


Ok. Fine !! Retrieve a list of all events with notes. Query

SELECT c.event_name, c.speaker, c.event_notes FROM c where IS_DEFINED(c.event_notes)

Results


I don't want all notes, just with 'pool' word.
Query

SELECT c.speaker, c.event_name, c.event_notes FROM c JOIN notes IN c.event_notes where IS_DEFINED(c.event_notes) AND CONTAINS(notes,"pool")
Results



I don't care about event name or speakers. Let me list just notes!!!
Query

SELECT notes FROM c JOIN notes IN c.event_notes

Results


Please just a list, not object list!!!
Query

SELECT VALUE notes FROM c JOIN notes IN c.event_notes
Results



Bye !!!! 

To be Continue.......

Querying CosmosDB. Part 2

Hi!!!
We will continue to play a little with the same JSON Example in Part 1
We will try to do queries a little more complicated.


Total amount of time (in minutes) of laboratory in particular event.
Query

SELECT VALUE SUM(act.duration) FROM c
JOIN act IN c.activities
WHERE act.type=”lab” AND c.event_name= “CosmosDB Conf”

Results



List activities from specific type and from specific event
Query

SELECT VALUE act FROM c
JOIN act IN c.activities
WHERE act.type=”conference” AND c.event_name= “CosmosDB Conf”

Results


Get activities where duration is more than 30 minutes
Query

SELECT VALUE act FROM c JOIN act IN c.activities
WHERE act.duration>30

Results


Same as previous but bring me more information for each document
Query

SELECT VALUE { “id”:c.id,
“event”:c.event_name,
“speaker”:c.speaker,
“country”:c.event_country,
“activity”:act} FROM c
JOIN act IN c.activities
WHERE act.duration>30 and act.type=”lab”

Results




In case you have more complex JSON Document let us know. I’d like to help and be involve in…

Querying CosmosDB. Part 1

Hi CosmosDB Community !!!
I'd like to contribute with some posts about how to query Cosmos DB Collection with SQL API.

Suppose we have a speaker list of differents events around a whole world.

The link above represent speaker list example.
Example1.json

For all examples we will use Data Explore in Azure Portal. Anyway, you can use any API in any supported programming language to write your queries. We are not using Modeling data techniques or witting same data in different ways to avoid cross partition queries. The main objective of the post is how to use built-in functions and operators in CosmosDB SQL API.

I'd like to list all events from Hassan Arteaga Rodríguez 
Query
SELECT * FROM c where c.speaker = "Hassan Arteaga Rodriguez"
Results




I need to list all events from MEXICO. Not all fields Query
SELECT c.speaker, c.event_name,c.init_date,c.end_date FROM c where c.event_country = "MEXICO"
Results

I'd like to list all events  in June Query

SELECT * FROM c…

Message Queue + Azure Functions + CosmosDB. A perfect trio !!!

Ok !! It's not about SEX, it's about something they name AZURE.

Seriously, I'll asume in this short article, that you have some kind of experience with azure.

Suppose you have a heavy load. Incoming data come from some entity(application) that send, with high frequency, messages to some queue in Azure. Also you need analyze incoming data and apply some logic before insert data in your persistence layer.

It's a complicated task ?

Actually it's a simple task !!!
Step  1. Create storage account. 





Step 2. Create Queue



Step 3.  CosmosDB Resource

Let's asume we already have Data Base and Collection "READY" in CosmosDB


Step 4. Create Azure Function Application




Step 5 Create Azure Function. 

In this step we will see how to bind Message Queue and  CosmosDB collection inside Azure Function.

We will use template for Queue Trigger.



Define name and input bind. Remember this Azure function will listen a queue for message incoming.
Select storage account to create conne…

Awesome !!!

Beautiful way to search information....visit http://wiki.polyfra.me/