SCADS Requirements
From RAD Lab
Contents |
[edit]
Storage Layer
| ' | ' | Hypertable | Hbase | Voldemort | ||||||||
| API Requirements: | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. Primary key lookups | + | + | + | |||||||||
| 1. Range Queries (over xact units) | + | + | - | |||||||||
| 1. Arbitrary Indexes | - | - | - | |||||||||
| 1a. Secondary key lookups | - | +? | - | |||||||||
| 2. Range Queries (within xact unit) | + | - | ~ | |||||||||
| 3. Projection (within xact unit) | + | + | ~ | |||||||||
| Performance SLA Requirements: (e.g. 80% requests succeed in < 100ms) | ||||||||||||
| 1. Scale Up | Automatic data redistribution on server addition | ~ | ? | ~ | ||||||||
| 2. Scale Down | Automatic data coalesce on server removal | ~ | ? | ~ | ||||||||
| 3. Load Redistribution (Hotspot) | Caching with TTL | - | - | - | ||||||||
| 2a. or Tunable Replication (possible alternative) | - | - | - | |||||||||
| 2b. or Repartitioning/Data Migration (possible alternative) | - | - | - | |||||||||
| Geographic Distribution | (note: integrate from Durability) | - | - | - | ||||||||
| Read Consistency SLA Requirements: (e.g. Data less than 10 minutes stale) | ||||||||||||
| 1. Tunable replica staleness | Instrumented replication | (~=HDFS) | (~=HDFS) | + | ||||||||
| 1. Tunable index staleness | row-triggered updates | - | ? | - | ||||||||
| 3(?).bulk updates | - | ? | - | |||||||||
| Write Consistency SLA Requirements: (serializability, last write wins, custom resolution) | ||||||||||||
| 2. Conflict resolution | versioning/vector clocks | - | ? | + | ||||||||
| 2. Write-order dependency | versioning & read-time | ? | ? | ? | ||||||||
| 2a. or versioning and write-time resolution (alternative) | ? | ? | ? | |||||||||
| Durability SLA: (MTB data loss) | ||||||||||||
| 2. Persistence to disk | + | + | + | |||||||||
| 2. Tunable Durability | Per-table replication control | + | ? | ? | ||||||||
| 2a. Per-record replication control | ? | ? | ? | |||||||||
| 2. replica assignment (rack-aware) | ? | ? | ? | |||||||||
| 2. replica assignment (datacenter-aware) | ? | ? | ? | |||||||||
| 3. replica assignment (continent-aware) | ? | ? | ? | |||||||||
| 3. replica assignment (provider-aware)) | ? | ? | ? | |||||||||
| 3. Corruption detection | Read-after-write | ? | ? | |||||||||
| Session Guarantees: | ||||||||||||
| 2. Read own writes + Monotonic reads | Read versioning | ? | ? | ? | ||||||||
| 2a.or Session-aware routing (alternative) | ? | ? | ? | |||||||||
| 2b.or Client-side caching? (alternative) | ? | ? | ? | |||||||||
| Desirable Features: | ||||||||||||
| Distributed-transactions | ? | ? | ? | |||||||||
| Partition-tolerance | ? | ? | ? | |||||||||
| Language-bindings | ? | ? | ? | |||||||||
+ => feature present, - => feature missing, ~ => feature partially implemented or "coming soon"
1 => Necessary for Demoability, 2 => Necessary for full functionality, 3 => Optimizations
[edit]
Notes
[edit]
