Release Date: 2 June 2021
We are proud to announce the a preview version of our Neo4j Database – Neo4j 4.3-preview Enterprise Edition. Neo4j 4.3-preview is the core technology of the Neo4j Graph Platform.Important Information
This release is a preview of the upcoming GA release and it should not be used in production. Issues in this release may lead to data corruption and eventually data loss. In the GA version we may consider to add, modify or remove features that are or are not present here: users and developers are therefore advised to plan the use of the new features with caution.Highlights
Operability
- Improved server-side routing functionality – server-side routing has been extended to cover more use cases. Clients connect to a cluster DBMS and automatically execute or redirect queries depending on the type of transaction (read-only vs read-write) and on the type of instance (leader vs follower or read replica). Transaction redirection can be orchestrated by the client (client-side routing) or by the server (server-side routing). More information is available here.
- New dynamic settings – dbms.lock.acquisition.timeout, dbms.transaction.bookmark_ready_timeout, dbms.security.ldap.authentication.attribute, dbms.security.ldap.authorization.user_search_filter, dbms.security.ldap.authorization.user_search_base, dbms.security.ldap.authentication.user_dn_template and dbms.security.ldap.authorization.group_membership_attributes are now dynamic.
- Change of permissions for the expand command option – the neo4j.conf file can be used with the expand command option with a more relaxed permission (Owner:RW and Group:R in Linux and MacOS).
- Instance unique identification in causal cluster – member of a cluster have a unique identification. In previous versions, the member were identified by their URI.
- Archive of the cluster state with neo4j-admin unbind – when an instance is removed from a cluster using the neo4j-admin unbind utility, an operator can save its cluster state for port-mortem analysis and problem resolution.
- CREATE DATABASE with a seed store – a database in a clustered DBMS can be created from a seed restored in one of the members. More information is available here.
- Renaming users and roles – administrators can rename users and roles without the need to recreate them. More information is available here.
- SHOW FUNCTIONS and SHOW PROCEDURES commands – administrators can review the functions and the procedures available on a DBMS using the new SHOW commands, controlled by role-based access control security.
- CREATE and DROP FULLTEXT INDEX commands – administrators can create and drop full-text indexes using the CREATE INDEX and the DROP INDEX commands.
- Logging improvements – new settings allow administrators to customize query, security and general logs. Logs have now structured (JSON) and unstructured formats, parameters can be limited in length and obfuscated when needed. Query plans and transaction IDs can be added to the query log in order to improve query analysis. More information is available here.
- Backup/Restore enhancements – Neo4j 4.3 provides more functionality in terms of incremental backups, deferred and parallel recovery operations. More information is available here.
- License directory – Neo4j 4.3 offers a new standard directory under the Neo4j home directory to store license files. The default setting in the neo4j.conf file is ${NEO4J_HOME}/licenses.
Scalability & Federation
- Relationship chain lock for create/delete dense nodes – Neo4j 4.3 has an improved locking mechanism for writing relationships (insert/update/delete). There is a new concept of relationship chain so that relationships are no longer directly connected to the start and end nodes in the relationships store.
- Read replica-only clusters – Neo4j 4.3 extends the capabilities of clustering to the use of one or more Read Replica instances used in read-only mode, replicating data from a single instance used in read-write mode.
Performance
- Node label and relationship type indexes – in Neo4j 4.3 a new index for relationship types has been added, similar to the existing index for node labels. Node label and relationship type indexes are now created and maintained as any other index by using INDEX commands. In practical terms, these indexes can now be dropped if they are not needed and they do not block startup if they must be rebuilt. Also, they are visible with the SHOW INDEX command. More information is available here.
- Relationship type/property Indexes – similar to indexes for properties associated to nodes, Neo4j 4.3 provides native index capabilities for properties associated to relationships. More information is available here.
- Cypher Planner improvements – improvements have been added for ORDER BY and LIMIT.
- isEmpty built-in function – Neo4j 4.3 provides the isEmpty() function as an idiomatic way to test the emptiness of some object with a given data type. More information is available here.
Development/Language
- exists() and IS NOT NULL functionality – IS NOT NULL is the preferred way to assert that an object is null or not null. exists() can be confused with a function and it has been deprecated.
- Conversion functions – Neo4j 4.3 incorporates new functions to convert numbers, strings and booleans. toIntegerOrNull(), toFloatOrNull(), toBooleanOrNull(), toStringOrNull(), toIntegerList(), toFloatList(), toBooleanList() are toStringList() added to the existing conversion functions available in previous versions.
Security
- Per user Home database – Similar to a home directory for a Linux user, a home database is the database for a particular user when it connects to Neo4j. More information is available here.
- LDAP: guard against inadvertent authorization – dbms.security.ldap.authorization.access_permitted_group restricts LDAP authorization to a particular group. dbms.security.ldap.authentication.attribute and dbms.security.ldap.authentication.search_for_attribute have been added to allow a custom attribute to be used for looking up LDAP users.