Azure Developer Associate (YT) - Storagen & CosmosDB Flashcards
Wat zijn de 5 Core storage services?
- Blob > object store for text en binary data
- Files > gedeelde files voor cloud on-premise deployments
- Queus > NoSql voor schemaloze storage
- Tables > Messaging store voor betrouwbare berichten tussen applicaties
- Azure Disk > Block-level storage volumes?
1-4 onder storage accounts te vinden, 5 onder disks
Wat zijn de performance Tiers voor storage accounts?
Standard
* HDD opslag
* Performance obv Hot/Cool/Archive
* UseCases: Backup, media, bulk data processing
Premium
* SSD opslag
* low-latency & higher throughput
IOPS > Input/Output Per Second
Voordelen Cosmos DB
- multiregion replication
- 5 consistency levels
- low latency <10ms read/write op 99%
- elastic scale out over meerdere regions
Wat zijn de verschillende Database API’s?
Azure tables > Key/Value datastore > beschikbaar in Account Storage (single region&table) en CosmosDb (multi regions)
CosmosDb
* Core(SQL) > document based met de beste end-to-end ervaring omdat we fullcontrol hebben over de interface, service en SDK
* Graph API> Graph queries en opslag in edges en relaties in vertices
- MongoDb > BSON format en compatible met MongoDB Wire protocol
- Table API > Key/value format
- Cassandra > Column-oriented schema en compatible met Apache Cassandra
Welke opties heb je om Cosmos op te schalen?
Verticaal of Horizontaal
Verticaal > Upgrade wat de machine zwaarder maakt > heeft een limit.
Horizontaal > extra machine erbij. Data en operaties worden verdeeld. Sharding het is proces dat de data opsplitst. Azure regelt sharding.
Horizontaal is beter omdat het geen limit heeft.
Cosmos schaalt door sharding en/of partitioning van de data.
Bij het aanmaken van de database maak je logical en physical partitions aan.
Kleine db’s zullen vele logical en 1 physical hebben.
Wat is een Cosmos logical partition?
- Set of items met dezelfde partition key > OrderItem > key:”OrderId”
- defines the scope of db transactions
- No limit of logical partition in a container
- Each logical can store up to 20gb
Wat is een Cosmos physical partition?
- bestaat uit 1 of meer logical partitions > Users/Orders/OrderItems
- Are internal implementation of the system entirely managed by Azure Cosmos DB
- container schaal je op door het verspreiden vd data over physical partitions.
- limit van 10.000 RU/s
- max storage van 50GB
Wat is een partition key?
Bij het aanmaken van een container geef je aan wat de key. Dit kan 1x. De key is een unieke waarde binnen de container. Bijv. bij Customers kan die een id of email zijn.
Path en value zijn de twee componenten van een key
Wat is een Partition Set?
Group van dezelfde Physical partitions in meerdere Regio’s.
Hoe kies je het beste een partition key uit?
- waarde mag niet veranderen
- wide range of values > firstname valt bijv. af omdat het niet uniek is en daarmee meerdere partitions gebruikt en de performance benadeeld
- string of number
- is niet meer aan te passen
Wat is een unique key?
Geeft een extra data integriteit laag.
Je zet een policy op wanneer je een container maakt
* 1:16 path values
* 1:10 unique key constraint/combination
* Niet meer aan te passen
* zijn case-sensitive
De Request Unit (RU) zijn iets duurder
vb: /first_name/address/zipcode
Waar moet je rekening mee houden als je een read-heavy container hebt?
De Partition key moet dan zoveel mogelijk gebruikt worden in de query
Wat is de Cosmos DB hierarchy binnen Azure?
- Account > uniek DNS naam
- database > meerdere onder 1 account > set containers
- Containers > unit of scalabilty for provisioned throughput and storage. Horizontally partitioned and replicated across multiple reqions
- items (data) > Hangt af vd API > document, table, node of edge in graph
Wat zijn de 2 throughput strategies bij het aanmaken van een database-container?
- Dedicated mode > gaat exclusief naar deze container. Heeft SLA ondersteuning
- Shared mode > throughput gaat door alle containers
Shared is minder voorspelbaar, maar beter voor de kosten
later niet aan te passen
Wat zijn de consistency Models/Levels?
Volgorde:
Stronger > Weaker
Higher > lower latency
Lower > High troughput (verwerken van data in RU/s)
- Strong > Write operarion op de primary DB. Daarna naar de replicas. Pas zichtbaar in de Primary als alle replicas het hebben.
- Bounded staleness > zelfde als Strong, met Staleness optie voor de replicas. Staleness is de tijd dat een replica kan achterlopen op de primary. Dit is per regions. Dus Asie kan hiermee qua tijd achterlopen op EU
- Session > Is clientcentric ipv datacentric > Data betekent dat de data in de region van de client bestaat.
- Consistent Prefix > Volgorde van de write staat voorop ongeacht de snelheid van de replicas
- Eventual > volgorde maakt niet uit
Welke Azure Blob storage client lib ken je?
- blobclient > voor het manipuleren van blobs
- ClientOptions > voor de options voor het connecten met de Blob storage
- ContainerClient > voor het manipuleren van de container en blobs
- ServiceClient > Voor het manipuleren van Service resources an blob containers > Geef ook de toplevel namespace
- UriBuilder > voor het manipuleren van de Uri van account, container of blob
Wat voor properties en metadata heeft een Blob?
System properties > bestaat op elk Blob storage resource. Sommige readonly. Sommige komen overeen met standaard HTTP Headers.
> GetProperties & SetHttpHeaders
> Met REST
» GET/HEAD <url>?restype=container
>> PUT <url>?restype=container</url></url>
User defined metadata > name-value pairs die op een blobresource gezet kan worden. Dit is custom een heeft geen effect op de resource zelf.
> GetProperties & SetMetaData
> Met REST
» GET/HEAD <url>?comp=metadata
>> PUT <url>?comp=metadata</url></url>
Wat zijn de verschillende Storage lifecycles of Blob storage Access Tiers?
HOT
* data veel gebruikt
COOL
* data minder gebruikt > weinig gebruikte media of recover data
* accessed and stored at least 30 days
ARCHIVE
* data weinig gebruikt
* long term backup
* accessed and stored at least 180 days
Kun je de Storage lifecycle (access tiers) aanpassen?
ja, je kunt
* een blob verplaatsen naar een betere tier
* blob verwijderen
* regels opstellen die 1x per dag de blobs naloopt
* regels op een container of subset aan blobs instellen. Met prefixes of filters
* rehydrating uit archive naar andere Tier. Duurt uren
Wat is een storage lifecycle policy?
Een policy is een collectie van regels.
Elke regels heeft een name/enabled/type/definition
> definition zijn de regels wat en wanneer er iets gedaan moet worden.
- Elke regel heeft een filter en action set.
- De filter is een limit op de actions for een set aan objects in een container of objects names
- ?
BSON vs JSON
Binary JSON is sneller en compacter.
Het heeft dezelfde structuur als een JSON met meer data-type zoals > Datetime, byte array, regulat expressions, js code
Waar kun je binnen MongoDb op zoeken?
- fields
- ranged queries
- regular expressions
Mongodb heeft een primary en secondary index
Wat zijn de scale options voor Mongodb?
- replica set > copy met dezelfde data voor failovers > kan met een loadbalancer
- horizontaal dmv sharding
de 3 opties voor dataaggregatie binnen Mongodb?
- aggregation pipeline
- map-reduce
- single-purpose aggregation
Wat is een Graph database?
database wat bestaat uit vertices (node, dots) die de relatie aangeeft. De connectie tussen een vertives heet een edge(arc, lines)
Waar kun je Graph database voor gebruiken?
- Master data management
- Network and IT operations
- Social media graphing
- Feature engineering
Wat is Gremlin en Apache Tinkerpop?
Gremlin (WORA: Write onze, run anywhere) is de taal voor Tinkerpop. Tinkerpop is een adapter voor andere Graph Database. Daarmee is de taal niet meer afhankelijk van de database Vendor
Gremlin werkt op realtime database query (OLTP) en batch analytics query (OLAP)
Wat is Azure Table?
NoSql - schemaloos
Wat zijn de 2 capacity opties voor CosmosDB (NoSql engines)?
CoreSQL/MongoDB/AzureTable/Gremlin
Provisioned
* garantie voor een bepaalde capaciteit in RU’s
* Unlimted storage & Regions
* Billing amount of provisioned RU’s per hour
Serverless
* pay what you use > goed voor kleine workloads
* 50Gb storage & 1 region
* Billing amount of RU’s per hour
Voordelen van CosmosDB?
- werkt samen met AzureServices, functions, kubernetes, App services
- DB opties: Core SQL, MongoDB, Cassandra, Gremlin
- SDK’s in de talen: .Net, Java, Pythin, Nodejs
- Schemaless en automatische indexes
- SLA voor 99.99%
- Automatische Data replication in Azure Regions
- Encryption-at-rest en roles-based Data bescherming
- Autoscale om de workload aan te kunnen
Wat is een CosmosDb container?
Container die je opzet om een SQL, Cassandra, MongoDb, Gremlin of Table Api op te draaien. Instellingen zijn afhankelijk van de API type
Wat zijn de twee opties om data in CosmosDb te lezen?
Point reads
* key/value en gebruikt 1 RU’s
* geeft altijd 1 item terug
* partition key in request: verplicht
Queries
* geeft unlimited items terug voor minimaal 2,3 RU’s
* partition key in request: aanbevolen
Wat zijn Request Unit?
RU’s is aan abstracte voor de gebruikte Memory, CPU, IOPS right-sizing
* read > 1KB = 1 RU, 100KB=10RU
* insert > 1KB zonder index = ~5,5RU
* Upsert > 2x de kosten van een insert
* Delete > !
* Query > size van de items
Wat is een change feed?
Is een CosmosDB service wat een monitor is op alle containers en event kan triggeren. Het is een persistent record of changes in de juiste volgorde
SDK voor: .Net, Java, Python, NodeJs
Supports: SQLAPI, Cassandra, MongoDB, Gremlin
Wat zijn de 4 change feed componenten?
- Monitor container > waar de insert of update worden uitgevoerd
- Lease container > opslaan van states en coordineren met change feed processer
- Host > application instance dat luistert naar de change-feed-processor
- Delegate > code binnen de host die runned obv de change-feed-notification trigger
Welke Storage Account heb je en wat doen ze?
Het type storage account geeft aan welke features je wilt gebruiken. Je hebt:
* General-purpose V1&V2
* Blobstorage(legacy) & BlockBlobstorage
* FileStorage
GeneralV2 is de beste optie: Meeste services, standard&premium,accesstiers, replication
Hoe kies je een storage account?
Hangt af van je behoefte:
* Supported Services > blob, file, table etc
* Performance > Standard en Premium
* Access Tiers > Hoe snel wil ik het? Hot/Cool/Archive
* Replication > hoeveel copieen wil ik?
* Deployment Model > Resource Manager of Classic
Toevoegen van Storage Container Properties met Azure CLI
Tonen:
* az storage container show
* az storage container metadata show
* az storage blob metadata show
Update:
* az storage container/blob metadata update
–account-name$name –name$name –account-key$key