LogoLogo
Studio
4.3
4.3
  • HarperDB Docs
  • Getting Started
  • Developers
    • Applications
      • Caching
      • Defining Schemas
      • Debugging Applications
      • Define Fastify Routes
      • Example Projects
    • Components
      • Installing
      • Writing Extensions
      • Operations
      • Google Data Studio
      • SDKs
      • Drivers
    • REST
    • Operations API
      • Quick Start Examples
      • Databases and Tables
      • NoSQL Operations
      • Bulk Operations
      • Users and Roles
      • Clustering
      • Custom Functions
      • Components
      • Registration
      • Jobs
      • Logs
      • Utilities
      • Token Authentication
      • SQL Operations
      • Advanced JSON SQL Examples
    • Real-Time
    • Clustering
      • Requirements and Definitions
      • Creating A Cluster User
      • Naming A Node
      • Enabling Clustering
      • Establishing Routes
      • Subscription Overview
      • Managing Subscriptions
      • Things Worth Knowing
      • Certificate Management
    • Security
      • JWT Authentication
      • Basic Authentication
      • mTLS Authentication
      • Configuration
      • Users & Roles
      • Certificate Management
    • SQL Guide
      • SQL Features Matrix
      • SQL Date Functions
      • SQL Reserved Word
      • SQL Functions
      • SQL JSON Search
      • SQL Geospatial Functions
  • Administration
    • Best Practices and Recommendations
    • Logging
      • Standard Logging
      • Audit Logging
      • Transaction Logging
    • Clone Node
    • Compact
    • Jobs
    • HarperDB Studio
      • Create an Account
      • Log In & Password Reset
      • Organizations
      • Instances
      • Query Instance Data
      • Manage Databases / Browse Data
      • Manage Charts
      • Manage Clustering
      • Manage Instance Users
      • Manage Instance Roles
      • Manage Applications
      • Instance Metrics
      • Instance Configuration
      • Enable Mixed Content
  • Deployments
    • Configuration File
    • HarperDB CLI
    • Install HarperDB
      • On Linux
    • Upgrade a HarperDB Instance
    • HarperDB Cloud
      • IOPS Impact on Performance
      • Instance Size Hardware Specs
      • Alarms
      • Verizon 5G Wavelength
  • Technical Details
    • Reference
      • Analytics
      • Architecture
      • Content Types
      • Data Types
      • Dynamic Schema
      • HarperDB Headers
      • HarperDB Limits
      • Globals
      • Resource Class
      • Transactions
      • Storage Algorithm
    • Release Notes
      • HarperDB Tucker (Version 4)
        • 4.3.36
        • 4.3.35
        • 4.3.34
        • 4.3.33
        • 4.3.32
        • 4.3.31
        • 4.3.30
        • 4.3.29
        • 4.3.28
        • 4.3.27
        • 4.3.26
        • 4.3.25
        • 4.3.24
        • 4.3.23
        • 4.3.22
        • 4.3.21
        • 4.3.20
        • 4.3.19
        • 4.3.18
        • 4.3.17
        • 4.3.16
        • 4.3.15
        • 4.3.14
        • 4.3.13
        • 4.3.12
        • 4.3.11
        • 4.3.10
        • 4.3.9
        • 4.3.8
        • 4.3.7
        • 4.3.6
        • 4.3.5
        • 4.3.4
        • 4.3.3
        • 4.3.2
        • 4.3.1
        • 4.3.0
        • 4.2.8
        • 4.2.7
        • 4.2.6
        • 4.2.5
        • 4.2.4
        • 4.2.3
        • 4.2.2
        • 4.2.1
        • 4.2.0
        • 4.1.2
        • 4.1.1
        • 4.1.0
        • 4.0.7
        • 4.0.6
        • 4.0.5
        • 4.0.4
        • 4.0.3
        • 4.0.2
        • 4.0.1
        • 4.0.0
        • HarperDB Monkey (Version 3)
        • 3.3.0
        • 3.2.1
        • 3.2.0
        • 3.1.5
        • 3.1.4
        • 3.1.3
        • 3.1.2
        • 3.1.1
        • 3.1.0
        • 3.0.0
        • HarperDB Penny (Version 2)
        • 2.3.1
        • 2.3.0
        • 2.2.3
        • 2.2.2
        • 2.2.0
        • 2.1.1
        • HarperDB Alby (Version 1)
        • 1.3.1
        • 1.3.0
        • 1.2.0
        • 1.1.0
  • More Help
    • Support
    • Slack
    • Contact Us
Powered by GitBook
On this page
  • MQTT
  • Storage Performance Improvements
  1. Technical Details
  2. Release Notes
  3. HarperDB Tucker (Version 4)

4.3.0

HarperDB 4.3.0, Tucker Release

3/19/2024

Relationships and Joins

HarperDB now supports defining relationships between tables. These relationships can be defined as one-to-many, many-to-one, or many-to-many, and use a foreign key to record the relationship between records from different tables. An example of how to use this to define a many-to-one and one-to-many relationships between a product and brand table:

type Product @table {
	id: ID @primaryKey
	name: String @indexed
	# foreign key used to reference a brand
	brandId: ID @indexed
	# many-to-one relationship to brand
	brand: Related @relation(from: "brandId") 
}
type Brand @table {
	id: ID @primaryKey
	name: String @indexed
	# one-to-many relationship of brand to products of that brand
	products: Product @relation(to: "brandId")
}

This relationships model can be used in queries and selects, which will automatically "join" the data from the tables. For example, you could search for products by brand name:

/Product?brand.name=Microsoft

HarperDB also now supports querying with a sort order. Multiple sort orders can be provided breaking ties. Nested select have also been added, which also utilizes joins when related records are referenced. For example:

/Product?brand.name=Microsoft&sort(price)&select(name,brand{name,size})

OpenAPI Specification

A new default endpoint GET /openapi was added for describing endpoints configured through a GraphQL schema.

Query Optimizations

HarperDB has also made numerous improvements to query planning and execution for high performance query results with a broader range of queries.

Indexing Nulls

New tables and indexes now support indexing null values, enabling queries by null (as well as queries for non-null values). For example, you can query by nulls with the REST interface:

GET /Table/?attribute=null

Note, that existing indexes will remain without null value indexing, and can only support indexing/querying by nulls if they are rebuilt (removed and re-added).

CLI Expansion

The HarperDB now supports an expansive set of commands that execute operations from the operations API. For example, you can list users from the command line:

harperdb list_users

BigInt Support

HarperDB now supports BigInt attributes/values with integers (with full precision) up to 1000 bits (or 10^301). These can be used as primary keys or standard attributes, and can be used in queries or other operations. Within JSON documents, you can simply use standard JSON integer numbers with up to 300 digits, and large BigInt integers will be returned as standard JSON numbers.

Local Studio Upgrade

HarperDB has upgraded the local studio to match the same version that is offered on http://studio.harperdb.io. The local studio now has the full robust feature set of the online version.

MQTT

mTLS Support

Single-Level Wildcards

HarperDB's MQTT service now supports single-level wildcards (+), which facilitates a great range of subscriptions.

Retain handling

HarperDB's MQTT now supports the retain handling flags for subscriptions that are made using MQTT v5.

CRDT

HarperDB now supports basic conflict-free data type (CRDT) updates that allow properties to be individually updated and merged when separate properties are updated on different threads or nodes. Individual property CRDT updates are automatically performed when you update individual properties through the resource API. Individual property CRDT updates are used when making PATCH requests through the REST API.

Configuration Improvements

Balanced Audit Log Cleanup

Audit log cleanup has been improved to reduce resource consumption during scheduled cleanups.

export_* support for search_by_conditions

The export_local and export_to_s3 operations now support search_by_conditions as one of the allowed search operators.

Storage Performance Improvements

Significant improvements were made to handling of free-space to decrease free-space fragmentation and improve performance of reusing free-space for new data. This includes prioritizing reuse of recently released free-space for more better memory/caching utilization.

Compact Database

Compression

Compression is now enabled by default for all records over 4KB.

Previous4.3.1Next4.2.8

Last updated 6 months ago

See the for more information on defining relationships, and the .

HarperDB now supports mTLS based authentication for HTTP, WebSockets, and MQTT. See the .

The CRDT functionality also supports explicit incrementation to merge multiple parallel incrementation requests with proper summing. See the .

The configuration has improved support for detecting port conflicts, handling paths for fastify routes, and now includes support for specifying a heap limit and TLS ciphers. See the .

In addition to storage improvements, HarperDB now includes functionality for (while offline), which can be used to eliminate all free-space to reset any fragmentation.

schema definition documentation
REST documentation for more information on queries
configuration documentation for more information
Resource API for more information
configuration documentation for more information
compacting a database