Latihan 1 dari materi Choosing Your Database di System Design — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function pickDatabase(workload) supaya mengembalikan salah satu teks ini, persis dengan huruf besar kecilnya: "SQL", "KV", "Document", "Graph", atau "TimeSeries".
workload adalah object dengan properti shape ("relational", "document", "graph", "timeseries", "keyvalue"), writesPerSec (angka), needsAcidTransactions (true/false), dan queryPattern ("joins", "lookup", "traversal", "range-scan", "aggregate").
Cek aturan ini berurutan dari atas. Yang pertama cocok langsung di-return:
shape === "timeseries", atau queryPattern === "range-scan" dan writesPerSec > 10000 sekaligus: "TimeSeries".
shape === "graph" atau queryPattern === "traversal": "Graph".
needsAcidTransactions === true atau queryPattern === "joins": "SQL".
shape === "document": "Document".
- Selain itu (default):
"KV".
Lima baris console.log(pickDatabase(...)) di kode awal sudah ada, biarkan begitu. Output-nya harus persis lima baris ini, berurutan:
SQL
Graph
TimeSeries
Document
KV
Function-nya juga dipanggil langsung dengan lima workload lain:
{ shape: "keyvalue", writesPerSec: 50000, needsAcidTransactions: false, queryPattern: "range-scan" } harus "TimeSeries".
{ shape: "keyvalue", writesPerSec: 500, needsAcidTransactions: false, queryPattern: "range-scan" } harus "KV".
{ shape: "graph", writesPerSec: 5, needsAcidTransactions: true, queryPattern: "joins" } harus "Graph".
{ shape: "document", writesPerSec: 100, needsAcidTransactions: true, queryPattern: "lookup" } harus "SQL".
{ shape: "keyvalue", writesPerSec: 100, needsAcidTransactions: false, queryPattern: "joins" } harus "SQL".