5. db.atomic do |array| # Get current value.
element = array.pop # Modify the value.
array # Put the modified value (<--CAS)
end # Retry if the value is updated while modifying.
6. dynamic
Data Model Atomic Ops rebalance
kumofs key-value CAS Supported
Voldemort key-value - Supported
partitioned
Cassandra sorted map
table ops Supported
K-V, sorted map queue ops,
Tokyo Tyrant or table
-
etc.
queue ops,
Redis queue, etc.
etc.
-
7. Consistency Control on
Dynamic Rebalancing
kumofs on write (original algorithm)
Voldemort on read (Vector Clock, R+W>N)
Cassandra on read (Vector Clock, R+W>N)
Tokyo Tyrant N/A
Redis N/A
10. kumo-manager:
Manages kumo-servers
Server
Manager
kumo-server:
Replicates and stores data
kumo-gateway:
Relays requests from
applications to kumo-servers.
Gateway
11. Tokyo Cabinet
Replication Server
Server Server
Manager
Duplicated
(HA) Server Server
Manager
Server
Gateway Gateway Gateway
Application Application Application
41. It measured the elapsed time of serializing and deserializing
200,000 target objects. The target object consists of the three
integers and 512 bytes string.
42. MessagePack-RPC
Inter-process messaging library for
clients, servers and cluster applications.
43. MessagePack-RPC
Inter-process messaging library for
clients, servers and cluster applications.
Concept of Communicates with multiple
Future servers concurrently
Multithreaded
event-driven I/O
53. • Performance of the Loop is important.
• Java version uses Netty (JBoss’ I/O framework)
•Multithreaded
•Utilizes Java’s NIO
• C++ version uses mpio (Kumofs’ I/O architecture)
•Multithreaded
•Utilizes epoll or kqueue
• Ruby version uses Rev (libev for Ruby)
•Utilizes epoll or kqueue