GemFire: In-Memory Data GridSeptember 8th, 2011
Typical applicationClientApplication TierData Base2
Is it easy to scale Data Base?New users means, more application servers and more load to database.Application TierClientsData Base3
Moore's law: The number of transistors doubles approximately every 24 monthsWhat about data?       90% of today’s data            were created in the last 2 yearsWeb logs, financial transactions, medical records, etc4
“Hardware can give you a generic 20 percent improvement in performance, but there is only so far you can go with hardware.”Rob Wallos,Global Head of marketing data Citi5
What is latency?Latency – is the amount of time that it takes to get information from one designated point to another.6
Why worry about it?Amazon - every 100ms of latency cost them 1% in salesGoogle - an extra 0.5seconds in search page generation time dropped traffic by 20%Financial - If a broker's electronic trading platform is 5ms behind the competition it could loose them at least 1% of the flow - that's 4$ million in revenues per ms.7
How to make data access even fast?Distributed Architecture 
Drop ACID
Atomicity
Consistency
Isolation
Durability
Simplify Contract
Drop Disk8
Data GridData Grid is the combination of computers what works together to manage information and reach a common goal in a distributed environment.9
Shared nothing architectureIs a distributed computing architecture in which each node is independent and self-sufficient, and there is no single point of contention across the system.Popularized by BigTable and NoSQL
Massive storage potential
Massive scalability of processing10
In-Memory Data GridData are stored in memory, always available and consistent.Low Latency
Linear Scalability
No Single Point of failure
Associate arrays
Replicated 
Partitioned11
GemFireThe GemFire is in-memory distributed data management platform that pools memory across multiple processes to manage application objects and behavior.Caching
Querying
Transactions
Event Notification
Function Invocation12
CAP TheoremOnly two of these three desirable properties in distributed system can be achieved:Consistent
Available
Partition-Tolerant13
RegionsData region is a logical grouping within a cache for a single data set.A region lets you store data in many VMs in the system without regard to which peer the data is stored on. Work similar to Map interface.14
Region ExampleCache cache = new CacheFactory().set("cache-xml-file", "cache.xml”).create();CacheServercacheServer = cache.addCacheServer();cacheServer.start();Regionpeople = cache.getRegion(”people");people.put(“John”, john);<cache>  <regionname="people">  </region> </cache>Create Cache Server

GemFire In-Memory Data Grid