
Cloud
Learning Level
NoSQL databases scale horizontally and handle unstructured data. Key-value stores, document databases, and time-series databases solve different problems.
| Type | AWS | GCP | Azure | Firebase |
|---|---|---|---|---|
| Key-Value | DynamoDB | Firestore (native) | Table Storage | Firestore |
| Document | DynamoDB (document) | Firestore | Cosmos DB | Firestore |
| Time-Series | DynamoDB (DynamoDB Streams) | Cloud Firestore | Time Series DB | N/A |
| Graph | Neptune | Datastore | Cosmos DB | N/A |
| Search | OpenSearch | Cloud Search | Cognitive Search | N/A |
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();
// Write item
await dynamodb.put({
TableName: 'Users',
Item: {
userId: '123',
email: 'user@example.com',
created: Date.now()
}
}).promise();
// Read item
const result = await dynamodb.get({
TableName: 'Users',
Key: { userId: '123' }
}).promise();
// Query with GSI
const results = await dynamodb.query({
TableName: 'Users',
IndexName: 'EmailIndex',
KeyConditionExpression: 'email = :email',
ExpressionAttributeValues: { ':email': 'user@example.com' }
}).promise();Strengths:
Pricing: $1.25 per million writes + $0.25 per million reads
const admin = require('firebase-admin');
const db = admin.firestore();
// Write document
await db.collection('users').doc('user123').set({
email: 'user@example.com',
created: new Date()
});
// Read document
const doc = await db.collection('users').doc('user123').get();
// Query
const results = await db.collection('users')
.where('email', '==', 'user@example.com')
.get();Strengths:
Pricing: $0.06 per 100K reads + $0.18 per 100K writes
const CosmosClient = require("@azure/cosmos").CosmosClient;
const client = new CosmosClient({
endpoint: "https://your-account.documents.azure.com:443/",
key: "your-key"
});
const database = client.database("mydb");
const container = database.container("users");
// Create
await container.items.create({
id: 'user123',
email: 'user@example.com'
});
// Read
const { resource: item } = await container.item('user123').read();
// Query
const { resources: results } = await container.items
.query('SELECT * FROM c WHERE c.email = @email', {
parameters: [{ name: '@email', value: 'user@example.com' }]
})
.fetchAll();Strengths:
Pricing: Starting $1/month, scales with provisioned throughput
const admin = require('firebase-admin');
const db = admin.database();
// Write
await db.ref('users/user123').set({
email: 'user@example.com'
});
// Read
const snapshot = await db.ref('users/user123').get();
// Real-time listener
db.ref('users').on('value', (snapshot) => {
console.log('Users:', snapshot.val());
});Strengths:
Pricing: $1 per GB storage + bandwidth
| Feature | DynamoDB | Firestore | Cosmos DB | Firebase |
|---|---|---|---|---|
| Scale | Infinite | Millions/sec | 1M req/sec | Millions |
| Latency | <10ms | <100ms | <10ms | <100ms |
| Real-time | Streams (polling) | Native | No | Native |
| Transactions | Limited | Full | Full | Limited |
| Free Tier | No | Yes | No | Yes |
| Multi-region | Yes | Yes | Yes | Yes |
ā DynamoDB or Firestore with in-memory cache
ā Firestore or Cosmos DB Document API
ā Firebase Realtime DB or Firestore
ā Cosmos DB with Graph API
ā DynamoDB or dedicated time-series DB
Resources
Ojasa Mirai
Master AI-powered development skills through structured learning, real projects, and verified credentials. Whether you're upskilling your team or launching your career, we deliver the skills companies actually need.
Learn Deep ⢠Build Real ⢠Verify Skills ⢠Launch Forward