As any engineer will tell you, choosing a database for your next great project is an important but challenging step , as it’s hard to anticipate exactly where your project roadmap will lead you. Switching databases is even harder and while we are able to choose the right tool for each task, you then end up with several database solutions to maintain.
What if there was a product that was hybrid enough to suit multiple workloads? While there is a grain of truth in the “jack of all trades, master of none” expression, after a recent deep-dive into the Apache Ignite database we may have that “master of all” database. In this Meetup, led by DoiT International Staff Cloud Architect Zaar Hai, we will explore together to find out.
And finally, does it run on Kubernetes?
4. A shortlist of features
✘ Key / Value DB
✘ Both in-memory and on-disk
✘ True (easy) clustering
✘ Transactions
✘ ANSI-99 SQL, with JDBC and ODBC support
✘ Grid computing
4
24. Grid Computing
24
✘ Write your own function
✘ Load them as Jars into Ignite nodes
✘ Run computations close to your data
25. Cheap Setup That Makes Sense
25
✘ 2 x (2 CPU / 16 GB RAM) x 2 zones, 1 TB PD SSD per node
✘ Less than $250/TB
✘ 9 thin clients during random inserts, updates, and reads:
○ 3,682 inserts/s, 3.8ms median latency
○ 4,229 updates/s, 4.8ms median latency
○ 3,952 reads/s, 4.2ms median latency
✘ Completely CPU bound - you pay mainly for storage
27. Running on K8s
27
✘ There are official docker images for Ignite Server
✘ There are guides for EKS, GKE, etc.
✘ Our improvements: https://github.com/doitintl/ignite-gke
30. Tools
30
✘ Couldn’t get CLI to work
✘ Web Console
○ Overcomplicated
○ Outdated docker images
31. Tools
31
✘ Couldn’t get CLI to work
✘ Web Console
○ Overcomplicated
○ Outdated docker images
Node3
Node1
Node2
Mongo
32. Tools
32
✘ Couldn’t get CLI to work
✘ Web Console
○ Overcomplicated
○ Outdated docker images
Node3
Node1
Node2
Mongo
Web
FE
Web
BE
33. Tools
33
✘ Couldn’t get CLI to work
✘ Web Console
○ Overcomplicated
○ Outdated docker images
Node3
Node1
Node2
Mongo
Web
FE
Web
BE
agent
REST
34. REST API
✘ Not really REST - more like HTTP RPC
GET /ignite?cmd=getorcreate&cacheName=foo
34
35. REST API
✘ Not really REST - more like HTTP RPC
GET /ignite?cmd=getorcreate&cacheName=foo
✘ Even better 😨
# Fetch cache partitions list
GET /ignite?cmd=exe&
name=org.apache.ignite.internal.visor.compute.VisorGatewayTask&
p1=nid1;nid2;nid3&
p2=org.apache.ignite.internal.visor.cache.VisorCachePartitionsTask&
p3=org.apache.ignite.internal.visor.cache.VisorCachePartitionsTaskArg&
p4=my_cache
35
36. Supported Client Protocols
✘ HTTP “REST” API
✘ Memcached-compatible Binary Protocol
✘ Redis client protocol (partial support)
✘ Ignite Binary Client Protocol
○ “Ignite binary client protocol enables user applications to
communicate with an existing Ignite cluster without starting a
full-fledged Ignite node. An application can connect to the
cluster through a raw TCP socket.”
36