Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/developers/operations-api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Operations API

# Operations API

The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling Harper. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../deployments/configuration#operationsapi), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](./security#basic-auth) or [JWT authentication](./security#jwt-auth). For example, a request to create a table would be performed as:
The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling Harper. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../deployments/configuration#operationsapi), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](./security#basic-auth) or [JWT authentication](./security#jwt-auth). For example, a request to create a table would be performed as:

```http
POST https://my-harperdb-server:9925/
Expand Down
6 changes: 3 additions & 3 deletions docs/developers/replication/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Harper replication uses a peer-to-peer model where every node in your cluster ca

### Replication Configuration

To connect your nodes, you need to provide hostnames or URLs for the nodes to connect to each other. This can be done via configuration or through operations. To configure replication, you can specify connection information the `replication` section of the [harperdb-config.yaml](../../deployments/configuration). Here, you can specify the host name of the current node, and routes to connect to other nodes, for example:
To connect your nodes, you need to provide hostnames or URLs for the nodes to connect to each other. This can be done via configuration or through operations. To configure replication, you can specify connection information the `replication` section of the [harperdb-config.yaml](../deployments/configuration). Here, you can specify the host name of the current node, and routes to connect to other nodes, for example:

```yaml
replication:
Expand Down Expand Up @@ -77,7 +77,7 @@ replication:

Harper supports the highest levels of security through public key infrastructure based security and authorization. Depending on your security configuration, you can configure Harper in several different ways to build a connected cluster.

When using certificate-based authentication, Harper automatically performs OCSP (Online Certificate Status Protocol) verification to check if certificates have been revoked. This ensures that compromised certificates cannot be used for replication connections. Certificate verification settings follow the same configuration as HTTP mTLS connections (see [certificate verification configuration](../../deployments/configuration.md#http)).
When using certificate-based authentication, Harper automatically performs OCSP (Online Certificate Status Protocol) verification to check if certificates have been revoked. This ensures that compromised certificates cannot be used for replication connections. Certificate verification settings follow the same configuration as HTTP mTLS connections (see [certificate verification configuration](../deployments/configuration.md#http)).

#### Provide your own certificates

Expand Down Expand Up @@ -189,7 +189,7 @@ Nodes can be removed from the cluster using the [`remove_node` operation](./oper

#### Insecure Connection IP-based Authentication

You can completely disable secure connections and use IP addresses to authenticate nodes with each other. This can be useful for development and testing, or within a secure private network, but should never be used for production with publicly accessible servers. To disable secure connections, simply configure replication within an insecure port, either by [configuring the operations API](../../deployments/configuration) to run on an insecure port or replication to run on an insecure port. And then set up IP-based routes to connect to other nodes:
You can completely disable secure connections and use IP addresses to authenticate nodes with each other. This can be useful for development and testing, or within a secure private network, but should never be used for production with publicly accessible servers. To disable secure connections, simply configure replication within an insecure port, either by [configuring the operations API](../deployments/configuration) to run on an insecure port or replication to run on an insecure port. And then set up IP-based routes to connect to other nodes:

```yaml
replication:
Expand Down
2 changes: 1 addition & 1 deletion docs/technical-details/reference/components/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ title: Components

All together, the support for implementing a feature is the extension, and the actual implementation of the feature is the application.

For more information on the differences between applications and extensions, refer to the beginning of the [Applications](../../../developers/applications/) guide documentation section.
For more information on the differences between applications and extensions, refer to the beginning of the [Applications](../../developers/applications/) guide documentation section.

This technical reference section has detailed information on various component systems:

Expand Down
10 changes: 5 additions & 5 deletions docs/technical-details/reference/resources/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ This object provides extension points for extension components that wish to impl

### `transaction`

This provides a function for starting transactions. See the [transactions documentation](../../technical-details/transactions) for more information.
This provides a function for starting transactions. See the [transactions documentation](./transactions) for more information.

### `contentTypes`

Expand Down Expand Up @@ -272,7 +272,7 @@ When a resource is accessed as a data source:

### `operation(operationObject: Object, authorize?: boolean): Promise<any>`

This method is available on tables and will execute a Harper operation, using the current table as the target of the operation (the `table` and `database` do not need to be specified). See the [operations API](../../../developers/operations-api/) for available operations that can be performed. You can set the second argument to `true` if you want the current user to be checked for authorization for the operation (if `true`, will throw an error if they are not authorized).
This method is available on tables and will execute a Harper operation, using the current table as the target of the operation (the `table` and `database` do not need to be specified). See the [operations API](../../developers/operations-api/) for available operations that can be performed. You can set the second argument to `true` if you want the current user to be checked for authorization for the operation (if `true`, will throw an error if they are not authorized).

### `allowStaleWhileRevalidate(entry: { version: number, localTime: number, expiresAt: number, value: object }, id): boolean`

Expand Down Expand Up @@ -373,7 +373,7 @@ type MyTable @table {
}
```

See the [schema documentation](../../../developers/applications/defining-schemas) for more information on computed attributes.
See the [schema documentation](../../developers/applications/defining-schemas) for more information on computed attributes.

### `primaryKey`

Expand Down Expand Up @@ -455,7 +455,7 @@ export class BlogPost extends tables.BlogPost {
}
```

Please see the [transaction documentation](../../technical-details/transactions) for more information on how transactions work in Harper.
Please see the [transaction documentation](./transactions) for more information on how transactions work in Harper.

### Query

Expand Down Expand Up @@ -490,7 +490,7 @@ Table.search({

**Chained Attributes/Properties**

Chained attribute/property references can be used to search on properties within related records that are referenced by [relationship properties](../../../developers/applications/defining-schemas) (in addition to the [schema documentation](../../../developers/applications/defining-schemas), see the [REST documentation](../../../developers/rest) for more of overview of relationships and querying). Chained property references are specified with an array, with each entry in the array being a property name for successive property references. For example, if a relationship property called `brand` has been defined that references a `Brand` table, we could search products by brand name:
Chained attribute/property references can be used to search on properties within related records that are referenced by [relationship properties](../../developers/applications/defining-schemas) (in addition to the [schema documentation](../../developers/applications/defining-schemas), see the [REST documentation](../../developers/rest) for more of overview of relationships and querying). Chained property references are specified with an array, with each entry in the array being a property name for successive property references. For example, if a relationship property called `brand` has been defined that references a `Brand` table, we could search products by brand name:

```javascript
Product.search({ conditions: [{ attribute: ['brand', 'name'], value: 'Harper' }] });
Expand Down
10 changes: 5 additions & 5 deletions release-notes/v4-tucker/4.1.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ HarperDB 4.1 introduces the ability to use worker threads for concurrently handl

This means debugging will be much easier for custom functions. If you install/run HarperDB locally, most modern IDEs like WebStorm and VSCode support worker thread debugging, so you can start HarperDB in your IDE, and set breakpoints in your custom functions and debug them.

The associated routing functionality now includes session affinity support. This can be used to consistently route users to the same thread which can improve caching locality, performance, and fairness. This can be enabled in with the [`http.sessionAffinity` option in your configuration](../../../deployments/configuration#http).
The associated routing functionality now includes session affinity support. This can be used to consistently route users to the same thread which can improve caching locality, performance, and fairness. This can be enabled in with the [`http.sessionAffinity` option in your configuration](/docs/4.1/configuration#session-affinity).

HarperDB 4.1's NoSQL query handling has been revamped to consistently use iterators, which provide an extremely memory efficient mechanism for directly streaming query results to the network _as_ the query results are computed. This results in faster Time to First Byte (TTFB) (only the first record/value in a query needs to be computed before data can start to be sent), and less memory usage during querying (the entire query result does not need to be stored in memory). These iterators are also available in query results for custom functions and can provide means for custom function code to iteratively access data from the database without loading entire results. This should be a completely transparent upgrade, all HTTP APIs function the same, with the one exception that custom functions need to be aware that they can't access query results by `[index]` (they should use array methods or for-in loops to handle query results).

4.1 includes configuration options for specifying the location of database storage files. This allows you to specifically locate database directories and files on different volumes for better flexibility and utilization of disks and storage volumes. See the [storage configuration](../../../../deployments/configuration#storage) and [schemas configuration](../../../../deployments/configuration#schemas) for information on how to configure these locations.
4.1 includes configuration options for specifying the location of database storage files. This allows you to specifically locate database directories and files on different volumes for better flexibility and utilization of disks and storage volumes. See the [storage configuration](/docs/4.1/configuration#storage) and [schemas configuration](/docs/4.1/configuration#schemas) for information on how to configure these locations.

Logging has been revamped and condensed into one `hdb.log` file. See [logging](../../../administration/logging/) for more information.
Logging has been revamped and condensed into one `hdb.log` file. See [logging](/docs/administration/logging/) for more information.

A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes.

Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static).
Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](/docs/4.1/custom-functions/host-static).

Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](../../../developers/operations-api/bulk-operations#import-from-s3).
Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](https://api.harperdb.io/#aa74bbdf-668c-4536-80f1-b91bb13e5024).

Due to the AWS SDK v2 reaching end of life support we have updated to v3. This has caused some breaking changes in our operations `import_from_s3` and `export_to_s3`:

Expand Down
4 changes: 2 additions & 2 deletions release-notes/v4-tucker/4.1.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ title: 4.1.1

06/16/2023

- HarperDB uses improved logic for determining default heap limits and thread counts. When running in a restricted container and on NodeJS 18.15+, HarperDB will use the constrained memory limit to determine heap limits for each thread. In more memory constrained servers with many CPU cores, a reduced default thread count will be used to ensure that excessive memory is not used by many workers. You may still define your own thread count (with `http`/`threads`) in the [configuration](../../../deployments/configuration).
- An option has been added for [disabling the republishing NATS messages](../../../deployments/configuration), which can provide improved replication performance in a fully connected network.
- HarperDB uses improved logic for determining default heap limits and thread counts. When running in a restricted container and on NodeJS 18.15+, HarperDB will use the constrained memory limit to determine heap limits for each thread. In more memory constrained servers with many CPU cores, a reduced default thread count will be used to ensure that excessive memory is not used by many workers. You may still define your own thread count (with `http`/`threads`) in the [configuration](/docs/deployments/configuration).
- An option has been added for [disabling the republishing NATS messages](/docs/deployments/configuration), which can provide improved replication performance in a fully connected network.
- Improvements to our OpenShift container.
- Dependency security updates.
- **Bug Fixes**
Expand Down
Loading