Database Reference
In-Depth Information
• The server should be optimized to deal with a particular subset of the queries
thathitthecluster.Forexample,theloadbalancerwouldbeconiguredin
suchawaythatspeciictypesofqueries(forexample,writequeriesversus
readqueries,queriesforaspeciicregion/continent,andqueriesfroma
speciicapplication)wouldbedirectedtoaspeciicclustermember.The
advantage of doing so is that this will allow Neo4j to optimize its caching
content and use a concept that we sometimes refer to as a "sharded cache".
This means that the cluster members may in fact be holding the same dataset
intheirdatabasestoreiles,butinmemory,inthecache,theywillholdvery
different parts of the graph. Similar to any database management system,
queries served up from a cache will be much faster. So, we want to try and
optimize the cluster for this. If by some twist of fate the queries don't end
up on the right instance, then that does not mean that the application will
stop functioning. It will just not respond from cache, and therefore respond
a bit slower.
Neo4j's clustering solution allows you to provide the following features:
Horizontal scalability : This is provided by adding more machines to the
cluster and distributing the load over the cluster members
Vertical scalability : This is provided by adding more horsepower (CPU,
memory, disks, and so on) to the machines that are the cluster members
This covers 99 percent of all use cases—the references of Neo Technology speak
for itself.
A declarative query language - Cypher
OneofthedeiningfeaturesoftheNeo4jgraphdatabaseproducttodayisits
wonderful query language, called Cypher. Cypher is a declarative, pattern-matching
query language that makes graph database management systems understandable and
workable for any database user—even the less technical ones.
The key characteristic of Cypher is, in my opinion, that it is a declarative language,
opposed to other imperative query languages that have existed for quite some time.
Whyisthissoimportant?Hereareyouranswers:
• Declarative languages allow you to state what you're looking for, declare
the pattern that you would like to see retrieved, and then let the database
worry about how to go about retrieving that data.
In an imperative (query) language, you would have to tell the database
speciicallywhattodotogettothedataandretrieveit.
 
Search WWH ::




Custom Search