-
Notifications
You must be signed in to change notification settings - Fork 83
Scalability docs #2653
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
renetapopova
wants to merge
22
commits into
neo4j:dev
Choose a base branch
from
renetapopova:dev-spd
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Scalability docs #2653
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
29a9bd0
first batch of content
renetapopova 2bf75f9
fix the table
renetapopova 1ca6fbe
more content and suggestions from PM
renetapopova 224ce6d
add sizing and some of the dataingestion content
renetapopova df195c8
update the planning the topology section
renetapopova a41890e
added the rest of data ingestion, starting and stopping, listing
renetapopova 8d02d06
fix the listing output
renetapopova 73a0aea
add altering sharded property databases
renetapopova 9252915
apply suggestion from review
renetapopova 36ce20b
add deleting sharded property databases
renetapopova 7e0fc19
last batch of content
renetapopova 974b013
placeholders for diagrams
renetapopova 30848de
add the files
renetapopova 22bc0bd
editorial updates
renetapopova f843155
update the sizing section
renetapopova 6f99ff5
further updates
renetapopova d5c0e5d
update the planning page
renetapopova d130bcb
remove other mentions of autonomous
renetapopova e0ba7df
editorial updates
renetapopova c1ad025
apply suggestions from review
renetapopova 7f981bb
remove internal.dbms.single_raft_enabled=true
renetapopova 3125a71
comment out the unlimited growth of a graph
renetapopova File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions
1
modules/ROOT/images/scalability/property-shard-architecture.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
:page-role: new-2025.10 enterprise-edition not-on-aura | ||
:description: This page describes the concepts behind scalability with Neo4j. | ||
= Concepts | ||
|
||
Scalability is a crucial aspect of database management, allowing a system to handle changing demands by adding and removing resources to meet the demands of a database's workload. | ||
Neo4j supports multiple strategies to achieve scalability, enabling systems to handle larger datasets, more concurrent users, and higher query complexity without compromising performance or availability, i.e. the system's resiliency. | ||
The three main strategies are: | ||
|
||
* xref:clustering/setup/analytics-cluster.adoc[Analytics clustering] -- for horizontal read scalability. | ||
* xref:scalability/composite-databases/concepts.adoc[Composite databases] -- for federated queries and distributed data management. | ||
* xref:scalability/sharded-property-databases/overview.adoc[Property sharding] -- for handling massive property-heavy graphs. | ||
|
||
== What is scalability? | ||
|
||
Scalability is a system's ability to handle an increasing workload without compromising performance. | ||
There are two primary methods to achieve scalability: | ||
|
||
.Scaling methods | ||
[options="header", cols="1,1,1a,1a"] | ||
|=== | ||
| Method | ||
| Description | ||
| Pros | ||
| Cons | ||
|
||
| Vertical Scaling (Scaling Up / Down) | ||
| Increase or decrease the capacity of a single server by adding or removing CPUs, memory, or storage. | ||
| Simple to manage. | ||
| * Physical limits. + | ||
* Difficult to make online changes. | ||
|
||
| Horizontal Scaling (Scaling Out / In) | ||
| Distribute the workload by adding more servers or reduce the infrastructure by removing existing servers. | ||
| * Greater scalability and fault tolerance. + | ||
* Easier to make online changes. | ||
| More complex to manage. | ||
|=== | ||
|
||
== What is database scalability? | ||
|
||
Database scalability is the ability of a database management system (DBMS) to handle changing demands. | ||
To scale properly, a database must apply strategies that cover all areas: data access, data manipulation in memory, and database computing. | ||
|
||
Strategies include: | ||
|
||
* **Vertical Scaling** | ||
** Optimize usage (e.g., granular locks, partitioning) | ||
** Optimize physical resources (multi-threading, tiered storage) | ||
|
||
* **Horizontal Scaling** (distributed computing architectures): | ||
|
||
** *Shared Everything*: All servers share data and memory. | ||
Flexible, but prone to contention. + | ||
In this model, data is shared between disk and memory across all servers in a cluster. | ||
Requests are satisfied by any combination of servers. | ||
This approach introduces complexity, as the cluster must implement a way to avoid contention when multiple servers try to update the same data simultaneously. | ||
|
||
** *Shared Nothing*: Each server manages its own partition (shard). | ||
More fault-tolerant, eliminates single points of failure. + | ||
Every update request is handled by a single cluster member, which eliminates single points of failure. | ||
Each part of the database on a single cluster member is called a *shard*. | ||
|
||
image::horizontal-scaling-strategies.png[title="An example of horizontal scaling strategies.", role="middle"] | ||
|
||
== What is graph database scalability? | ||
|
||
Graph database scalability refers to the ability of a database to handle different amounts of data and workloads without compromising performance. | ||
It includes: | ||
|
||
* *Data volume* - involves ensuring a consistent SLA in both query and administration response times, even as the size of the data for storage and retrieval expands. + | ||
Volume depends on data type(s). | ||
Vectors occupy a large data space. | ||
|
||
* *Query volume* | ||
** Read queries + write queries. | ||
** Queries and user concurrency -- the aim is to ensure a linear response time during the execution of concurrent queries against the same database. | ||
** Query complexity -- provide response time in line with the complexity of a query. The complexity of a query can be set by the combination of: | ||
*** Steps to execute | ||
*** Rows to retrieve | ||
*** Total DB hits | ||
*** Total memory allocation | ||
*** Total execution time | ||
|
||
* *Admin volume* | ||
** Data ingestion/extraction -- When scaling data ingestion/extraction, the goal is to maintain a linear response time when ingesting or extracting an increasing set of data. | ||
This objective remains true regardless of the volume of stored data, provided a similar data structure is used. | ||
** Multi-tenancy -- In SaaS and AaaS environments, the scaling cost for tenants should exhibit linearity. | ||
For more general services, such as DBaaS (e.g., Aura), scalability should also be linear, considering all five scalability factors mentioned here. | ||
|
||
|
||
|
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hannah has made a slightly better one than this. I wonder if it might be helpful to add some graphics to the property shard databases to show the nodes and relationships with the properties on?