1 Storage 2 Client Primary A A B C D E F • Client knows responsible storage – Key hash is used to find it • Automatic backups Backup A Backup F Primary F
Query • Broadcast request – Unless Query is Key-Associated • All entries are evaluated – Unless Indexes are used key: field1: field2: D 70 80 key: field1: field2: C 50 60 key: field1: field2: B 30 40 key: field1: field2: A 10 20
Query • Broadcast request – Unless Query is Key-Associated • All entries are evaluated – Unless Indexes are used field1=10 or field2>70 key: field1: field2: C 50 60 key: field1: field2: B 30 40 key: field1: field2: D 70 80 key: field1: field2: A 10 20
Query • Broadcast request – Unless Query is Key-Associated • All entries are evaluated – Unless Indexes are used field1=10 and key=A key: field1: field2: D 70 80 key: field1: field2: C 50 60 key: field1: field2: B 30 40 key: field1: field2: A 10 20
serialized and distributed – May hold any data • Variable execution scope – Specific nodes – All nodes – Nodes bound to data Node 1 Node 2 Task Task Client Task
serialized and distributed – May hold any data • Variable execution scope – Specific nodes – All nodes – Nodes bound to data Node 1 Node 2 Task Task Client Task
Reverse maps • Runtime addition and removal • Local to Storage nodes • Used for all applicable operations • Efficient for high-cardinality data Value Key Value Key Key Value Key Value Reverse map Forward map