Skip to content

Commit da00a35

Browse files
authored
Merge pull request #354 from HarperFast/4.7
4.7 release
2 parents 9fe2ebd + 1e3555a commit da00a35

File tree

129 files changed

+21751
-17
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+21751
-17
lines changed

docusaurus.config.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,19 @@ const config: Config = {
7878
return `https://github.com/HarperDB/documentation/blob/main/docs/${docPath}`;
7979
}
8080
},
81-
lastVersion: '4.6',
82-
includeCurrentVersion: true,
81+
lastVersion: '4.7',
82+
includeCurrentVersion: false,
8383
versions: {
84-
'current': {
85-
label: '4.7-beta',
86-
banner: 'unreleased',
84+
'4.7': {
85+
// No banner for 4.7 as it's the latest stable version
86+
banner: 'none',
8787
},
8888
'4.6': {
89-
// No banner for 4.6 as its the latest stable version
89+
// No banner for 4.6 as it's still actively maintained
9090
banner: 'none',
9191
},
9292
'4.5': {
93-
// No banner for 4.5 as its still actively maintained
93+
// No banner for 4.5 as it's still actively maintained
9494
banner: 'none',
9595
},
9696
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"start": "npm run prebuild && docusaurus start",
99
"dev": "npm run prebuild && docusaurus start",
1010
"build": "npm run prebuild && docusaurus build && node scripts/postbuild.js",
11-
"version": "node scripts/cut-version.js",
11+
"version": "docusaurus docs:version",
1212
"swizzle": "docusaurus swizzle",
1313
"deploy": "docusaurus deploy",
1414
"clear": "npm run prebuild -- clean && docusaurus clear",

release-notes/v4-tucker/4.7.0.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
---
2-
title: 4.7.0 alpha
2+
title: 4.7.0
33
---
44

5-
# 4.7.0 alpha
5+
# 4.7.0
66

7-
8/15/2025
8-
9-
:::warning Alpha Release
10-
This is an alpha release available on npm with the 'next' tag. This version should not be considered stable and is intended for testing and evaluation purposes only. Use in production environments is not recommended. See the [current tags on npm](https://www.npmjs.com/package/harperdb?activeTab=versions#current-tags) for details.
11-
:::
7+
10/16/2025
128

139
- A new component status monitoring collects status from each component from loading and any registered notification of status changes.
1410
- OCSP is now supported, and can be used to invalidate TLS certificates used for replication and HTTP through an OCSP server.

release-notes/v4-tucker/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import LatestPatchLink from '@site/src/components/LatestPatchLink';
88

99
HarperDB version 4 ([Tucker release](v4-tucker/tucker)) represents major step forward in database technology. This release line has ground-breaking architectural advancements including:
1010

11-
## <LatestPatchLink major={4} minor={7} label="4.7 alpha" />
11+
## <LatestPatchLink major={4} minor={7} />
1212

1313
- Component status monitoring for tracking loading and status changes across all components
1414
- OCSP support for TLS certificate validation in replication and HTTP connections
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"label": "Administration",
3+
"position": 2,
4+
"link": {
5+
"type": "generated-index",
6+
"title": "Administration Documentation",
7+
"description": "Guides for managing and administering HarperDB instances",
8+
"keywords": ["administration"]
9+
}
10+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
title: Best Practices and Recommendations
3+
---
4+
5+
# Best Practices and Recommendations
6+
7+
Harper is designed for minimal administrative effort, and with managed services these are handled for you. But there are important things to consider for managing your own Harper servers.
8+
9+
### Data Protection and (Backup and) Recovery
10+
11+
As a distributed database, data protection and recovery can benefit from different data protection strategies than a traditional single-server database. But multiple aspects of data protection and recovery should be considered:
12+
13+
- Availability: As a distributed database Harper is intrinsically built for high-availability and a cluster will continue to run even with complete server(s) failure. This is the first and primary defense for protecting against any downtime or data loss. Harper provides fast horizontal scaling functionality with node cloning, which facilitates ease of establishing high availability clusters.
14+
- [Audit log](administration/logging/audit-logging): Harper defaults to tracking data changes so malicious data changes can be found, attributed, and reverted. This provides security-level defense against data loss, allowing for fine-grained isolation and reversion of individual data without the large-scale reversion/loss of data associated with point-in-time recovery approaches.
15+
- Snapshots: When used as a source-of-truth database for crucial data, we recommend using snapshot tools to regularly snapshot databases as a final backup/defense against data loss (this should only be used as a last resort in recovery). Harper has a [`get_backup`](./developers/operations-api/databases-and-tables#get-backup) operation, which provides direct support for making and retrieving database snapshots. An HTTP request can be used to get a snapshot. Alternatively, volume snapshot tools can be used to snapshot data at the OS/VM level. Harper can also provide scripts for replaying transaction logs from snapshots to facilitate point-in-time recovery when necessary (often customization may be preferred in certain recovery situations to minimize data loss).
16+
17+
### Horizontal Scaling with Node Cloning
18+
19+
Harper provides rapid horizontal scaling capabilities through [node cloning functionality described here](administration/cloning).
20+
21+
### Monitoring
22+
23+
Harper provides robust capabilities for analytics and observability to facilitate effective and informative monitoring:
24+
25+
- Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](./reference/analytics).
26+
- A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](./developers/operations-api/system-operations).
27+
- Information about the current cluster configuration and status can be found in the [cluster APIs](./developers/operations-api/clustering).
28+
- Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana.
29+
30+
### Replication Transaction Logging
31+
32+
Harper utilizes NATS for replication, which maintains a transaction log. See the [transaction log documentation for information on how to query this log](administration/logging/transaction-logging).
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
---
2+
title: Clone Node
3+
---
4+
5+
# Clone Node
6+
7+
Clone node is a configurable node script that when pointed to another instance of Harper will create a clone of that
8+
instance's config, databases and setup full replication. If it is run in a location where there is no existing Harper install,
9+
it will, along with cloning, install Harper. If it is run in a location where there is another Harper instance, it will
10+
only clone config, databases and replication that do not already exist.
11+
12+
Clone node is triggered when Harper is installed or started with certain environment or command line (CLI) variables set (see below).
13+
14+
**Leader node** - the instance of Harper you are cloning.\
15+
**Clone node** - the new node which will be a clone of the leader node.
16+
17+
To start clone run `harperdb` in the CLI with either of the following variables set:
18+
19+
#### Environment variables
20+
21+
- `HDB_LEADER_URL` - The URL of the leader node's operation API (usually port 9925).
22+
- `HDB_LEADER_USERNAME` - The leader node admin username.
23+
- `HDB_LEADER_PASSWORD` - The leader node admin password.
24+
- `REPLICATION_HOSTNAME` - _(optional)_ The clones replication hostname. This value will be added to `replication.hostname` on the clone node. If this value is not set, replication will not be set up between the leader and clone.
25+
26+
For example:
27+
28+
```
29+
HDB_LEADER_URL=https://node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-2.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb
30+
```
31+
32+
#### Command line variables
33+
34+
- `--HDB_LEADER_URL` - The URL of the leader node's operation API (usually port 9925).
35+
- `--HDB_LEADER_USERNAME` - The leader node admin username.
36+
- `--HDB_LEADER_PASSWORD` - The leader node admin password.
37+
- `--REPLICATION_HOSTNAME` - _(optional)_ The clones clustering host. This value will be added to `replication.hostname` on the clone node. If this value is not set, replication will not be set up between the leader and clone.
38+
39+
For example:
40+
41+
```
42+
harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-2.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ...
43+
```
44+
45+
Each time clone is run it will set a value `cloned: true` in `harperdb-config.yaml`. This value will prevent clone from
46+
running again. If you want to run clone again set this value to `false`. If Harper is started with the clone variables
47+
still present and `cloned` is true, Harper will just start as normal.
48+
49+
Clone node does not require any additional configuration apart from the variables referenced above.
50+
However, if you wish to set any configuration during clone this can be done by passing the config as environment/CLI
51+
variables or cloning overtop of an existing `harperdb-config.yaml` file.
52+
53+
More can be found in the Harper config documentation [here](../deployments/configuration).
54+
55+
### Excluding database and components
56+
57+
To set any specific (optional) clone config, including the exclusion of any database and/or replication, there is a file
58+
called `clone-node-config.yaml` that can be used.
59+
60+
The file must be located in the `ROOTPATH` directory of your clone (the `hdb` directory where you clone will be installed.
61+
If the directory does not exist, create one and add the file to it).
62+
63+
The config available in `clone-node-config.yaml` is:
64+
65+
```yaml
66+
databaseConfig:
67+
excludeDatabases:
68+
- database: null
69+
excludeTables:
70+
- database: null
71+
table: null
72+
componentConfig:
73+
exclude:
74+
- name: null
75+
```
76+
77+
_Note: only include the configuration that you are using. If no clone config file is provided nothing will be excluded,
78+
unless it already exists on the clone._
79+
80+
`databaseConfig` - Set any databases or tables that you wish to exclude from cloning.
81+
82+
`componentConfig` - Set any components that you do not want cloned. Clone node will not clone the component code,
83+
it will only clone the component reference that exists in the leader harperdb-config file.
84+
85+
### Cloning configuration
86+
87+
Clone node will not clone any configuration that is classed as unique to the leader node. This includes `replication.hostname`, `replication.url`,`clustering.nodeName`,
88+
`rootPath` and any other path related values, for example `storage.path`, `logging.root`, `componentsRoot`,
89+
any authentication certificate/key paths.
90+
91+
### Cloning system database
92+
93+
Harper uses a database called `system` to store operational information. Clone node will only clone the user and role
94+
tables from this database. It will also set up replication on this table, which means that any existing and future user and roles
95+
that are added will be replicated throughout the cluster.
96+
97+
Cloning the user and role tables means that once clone node is complete, the clone will share the same login credentials with
98+
the leader.
99+
100+
### Replication
101+
102+
If clone is run with the `REPLICATION_HOSTNAME` variable set, a fully replicating clone will be created.
103+
104+
If any databases are excluded from the clone, replication will not be set up on these databases.
105+
106+
### JWT Keys
107+
108+
If cloning with replication, the leader's JWT private and public keys will be cloned. To disable this, include `CLONE_KEYS=false` in your clone variables.
109+
110+
### Cloning overtop of an existing Harper instance
111+
112+
Clone node will not overwrite any existing config, database or replication. It will write/clone any config database or replication
113+
that does not exist on the node it is running on.
114+
115+
An example of how this can be useful is if you want to set Harper config before the clone is created. To do this you
116+
would create a harperdb-config.yaml file in your local `hdb` root directory with the config you wish to set. Then
117+
when clone is run it will append the missing config to the file and install Harper with the desired config.
118+
119+
Another useful example could be retroactively adding another database to an existing instance. Running clone on
120+
an existing instance could create a full clone of another database and set up replication between the database on the
121+
leader and the clone.
122+
123+
### Cloning steps
124+
125+
Clone node will execute the following steps when ran:
126+
127+
1. Look for an existing Harper install. It does this by using the default (or user provided) `ROOTPATH`.
128+
1. If an existing instance is found it will check for a `harperdb-config.yaml` file and search for the `cloned` value. If the value exists and is `true` clone will skip the clone logic and start Harper.
129+
1. Clone harperdb-config.yaml values that don't already exist (excluding values unique to the leader node).
130+
1. Fully clone any databases that don't already exist.
131+
1. If classed as a "fresh clone", install Harper. An instance is classed as a fresh clone if there is no system database.
132+
1. If `REPLICATION_HOSTNAME` is set, set up replication between the leader and clone.
133+
1. Clone is complete, start Harper.
134+
135+
### Cloning with Docker
136+
137+
To run clone inside a container add the environment variables to your run command.
138+
139+
For example:
140+
141+
```
142+
docker run -d \
143+
-v <host directory>:/home/harperdb/hdb \
144+
-e HDB_LEADER_PASSWORD=password \
145+
-e HDB_LEADER_USERNAME=admin \
146+
-e HDB_LEADER_URL=https://1.123.45.6:9925 \
147+
-e REPLICATION_HOSTNAME=1.123.45.7 \
148+
-p 9925:9925 \
149+
-p 9926:9926 \
150+
harperdb/harperdb
151+
```
152+
153+
Clone will only run once, when you first start the container. If the container restarts the environment variables will be ignored.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: Compact
3+
---
4+
5+
# Compact
6+
7+
Database files can grow quickly as you use them, sometimes impeding performance. Harper has multiple compact features that can be used to reduce database file size and potentially improve performance. The compact process does not compress your data, it instead makes your database file smaller by eliminating free-space and fragmentation.
8+
9+
There are two options that Harper offers for compacting a Database.
10+
11+
_Note: Some of the storage configuration (such as compression) cannot be updated on existing databases, this is where the following options are useful. They will create a new compressed copy of the database with any updated configuration._
12+
13+
More information on the storage configuration options can be [found here](../deployments/configuration#storage)
14+
15+
### Copy compaction
16+
17+
It is recommended that, to prevent any record loss, Harper is not running when performing this operation.
18+
19+
This will copy a Harper database with compaction. If you wish to use this new database in place of the original, you will need to move/rename it to the path of the original database.
20+
21+
This command should be run in the [CLI](../deployments/harper-cli)
22+
23+
```bash
24+
harperdb copy-db <source-database> <target-database-path>
25+
```
26+
27+
For example, to copy the default database:
28+
29+
```bash
30+
harperdb copy-db data /home/user/hdb/database/copy.mdb
31+
```
32+
33+
### Compact on start
34+
35+
Compact on start is a more automated option that will compact **all** databases when Harper is started. Harper will not start until compact is complete. Under the hood it loops through all non-system databases, creates a backup of each one and calls copy-db. After the copy/compaction is complete it will move the new database to where the original one is located and remove any backups.
36+
37+
Compact on start is initiated by config in `harperdb-config.yaml`
38+
39+
_Note: Compact on start will switch `compactOnStart` to `false` after it has run_
40+
41+
`compactOnStart` - _Type_: boolean; _Default_: false
42+
43+
`compactOnStartKeepBackup` - _Type_: boolean; _Default_: false
44+
45+
```yaml
46+
storage:
47+
compactOnStart: true
48+
compactOnStartKeepBackup: false
49+
```
50+
51+
Using CLI variables
52+
53+
```bash
54+
--STORAGE_COMPACTONSTART true --STORAGE_COMPACTONSTARTKEEPBACKUP true
55+
```
56+
57+
```bash
58+
STORAGE_COMPACTONSTART=true
59+
STORAGE_COMPACTONSTARTKEEPBACKUP=true
60+
```
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: Create a Studio Account
3+
---
4+
5+
# Create a Studio Account
6+
7+
Start at the [Harper Studio sign up page](https://fabric.harper.fast/#/sign-up).
8+
9+
1. Provide the following information:
10+
- First Name
11+
- Last Name
12+
- Email Address
13+
- Subdomain
14+
15+
_Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain "demo" and instance name "c1" the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com)._
16+
17+
- Coupon Code (optional)
18+
19+
1. Review the Privacy Policy and Terms of Service.
20+
1. Click the sign up for free button.
21+
1. You will be taken to a new screen to add an account password. Enter your password.
22+
_Passwords must be a minimum of 8 characters with at least 1 lower case character, 1 upper case character, 1 number, and 1 special character._
23+
1. Click the add account password button.
24+
25+
You will receive a Studio welcome email confirming your registration.
26+
27+
Note: Your email address will be used as your username and cannot be changed.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: Enable Mixed Content
3+
---
4+
5+
# Enable Mixed Content
6+
7+
If you want to connect insecure HTTP instances from the secure HTTPS Fabric Studio, you can enable mixed content temporarily. This isn't recommended in production systems. It would be better to add HTTPS / SSL Termination in front of your instances. But if you understand the risks, you can enable mixed content. Enabling mixed content is required in cases where you would like to connect the Harper Studio to Harper Instances via HTTP. This should not be used for production systems, but may be convenient for development and testing purposes. Doing so will allow your browser to reach HTTP traffic, which is considered insecure, through an HTTPS site like the Studio.
8+
9+
A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html).

0 commit comments

Comments
 (0)