Frequently Asked… Qs

Here are some of the most common questions and answers we’ve found potential user have when it comes to challenging the status quo in the world of data management.

Who Is Harper?

The founding team of HarperDB is incredibly passionate about our work, product, and our company. We wanted a name and logo that represented that. We also wanted something that reflected our values of authenticity, transparency, focus, and accountability.  Everyone at HarperDB is very passionate about our dogs, and we feel that they reflect our core values well. Dogs are loyal, authentic, honest, hard working, and trustworthy. These are all traits that we hope to embody to our customers, partners, and employees.  Harper happens to be our CEO and co-founder’s 5-year-old adopted mutt mix.

How do I access support?

You can submit new support tickets here: HarperDB Support

What operating system should I use to run HarperDB?

Linux flavored operating systems.

How are HarperDB’s SQL and NoSQL capabilities different from other solutions?

Many solutions offer NoSQL capability and separate processing for SQL such as in-memory transformation or multi-model support.  HarperDB’s unique mechanism for storing each data attribute individually allows for performing NoSQL and SQL operations in real-time on the stored data set.

What makes HarperDB different from its competitors?

Fully-indexed by Default
You don’t have to struggle with creating and managing indexes to optimize performance on live datasets. Whether you’re dealing with 100 records or 1 billion records, HarperDB’s patented data model always delivers best-in-class performance.

 

Tiny Footprint
At just a hair over 100MB, we make sure that HarperDB doesn’t require a lot of resources just to get up and running. While large enterprise data storage is a perfect market for us, we’re also aware that lots of developers (and their enterprise clients) are extending their data storage plain out to the edge, and we’re perfectly suited to running there, too.

 

Enterprise Security
With attribute-level permissions, you can grant users across the enterprise direct access to HarperDB without worrying about them seeing or changing data they’re not supposed to see.  Stop creating ETL jobs and spinning up second or third copies of your data just to keep your CIO happy- the future is controlled access and a single source of truth.

 

Built-in http/s API
HarperDB was built to make the lives of developers easier. No more holding open connections, forgetting to close them, and running through your pool. Since http requests are de-facto discrete, and virtually every language has a tried and true way to make asyncronous http calls, our API simplifies the way you’ll think about getting data, which- in turn- will simplify your application.

How does HarperDB ensure high availability and consistency?

Node.js clustering allows our developers to create highly available access to users data stores.

 

We do this by utilizing file system journaling and a consistency check process to manage race conditions and unintended overwrites.  HarperDB’s exploded data model allows for attribute specific rollbacks allowing users to quickly correct mistakes.

Is HarperDB ACID-compliant?

All transactions are granular down to the attribute allowing for extremely precise writes/updates. If one aspect of the write fails, HarperDB rolls back the transaction to the previous record state. All transactions are versioned allowing for precise rollback and auditing. All data is written directly to the file system allowing for data durability in a human readable format.

How Does HarperDB Secure My Data?

HarperDB has role and user based security allowing you to simply and easily control that the right people have access to your data.  We also implement a number of authentication mechanisms to ensure the transactions submitted are trusted and secure.

Is HarperDB open source?

The core solution of HarperDB is not open source at this time.  Elements of the solution will be released as open source such as the TCP server, HTTP server etc…  The core solution is available as a free and paid enterprise version.  Our goal is to provide excellent documentation for our free version so that people can build apps without making any investment.  That said, as apps scale, we offer an enterprise version with 24×7 support and more features like clustering and replication that are more designed for an enterprise use case.

Is HarperDB row or column oriented?

HarperDB can be considered column oriented, however, the exploded data model creates an interface that is free from either of these orientations.  A user can search and update with columnar benefits and be as ACID as row oriented restrictions.

What do you mean when you say HarperDB is single model?

HarperDB takes every attribute of a database table object and creates a key:value for both the key and its corresponding value. For example, the attribute eye color will be represented by a key “eye-color” and the corresponding value “green” will be represented by a key with the value “green”.  We use LMDB’s lightning-fast key:value store to underpin all these interrelated keys and values, meaning that every “column” is automatically indexed, and you get huge performance in a tiny package.

Why is HarperDB written in Nodejs?

Nodejs provides a popular interface allowing new and experienced developers to get up to speed quickly.  With a very large community, Nodejs has been adopted by many market leader domains allowing for the installation and proliferation of Nodejs and packages.  This creates integration points for places as small as micro-processing boards to enterprise level supercomputers and graphic processing units.

Error: HarperDB is not responding; node version compatibility

When HarperDB dependencies build during installation the build process will use the system’s OS package manager NodeJS version over alternative installations.

 

If there is a Node Version Manager installed outside the OS’s Package Manager, the OS’s version should be removed.

 

An error in the installation logs will look similar to below.

WARN engine harperdb@2.1.2: wanted: {"node":"12.16.1"} (current: {"node":"8.10.0","npm":"3.5.2"})

How Do I Move My HarperDB Data Directory?

HarperDB’s data directory can be moved from one location to another by simply moving the HDB_ROOT (where the data lives, which you specified during installation) to a new location.

Next, edit HarperDB’s hdb_boot_properties.file to point HarperDB to the new location by updating the settings_path variable. Substitute the NEW_HDB_ROOT variable in the snippets below with the new path to your new data directory, making sure you escape any slashes.

On MacOS/OSX

sed -i '' -E 's/^(settings_path[[:blank:]]*=[[:blank:]]*).*/\1NEW_HDB_ROOT\/settings\/config.js/' ~/.harperdb/hdb_boot_properties.file

On Linux

sed -i -E 's/^(settings_path[[:blank:]]*=[[:blank:]]*).*/\1NEW_HDB_ROOT\/settings\/config.js/' ~/hdb_boot_properties.file

Finally, edit the settings file in the HDB_ROOT folder you just moved, located at HDB_ROOT/config/settings.js:

  • Edit the HDB_ROOT parameter to reflect the new location of your data directory.
  • You may also need to update the CERTIFICATE, PRIVATE_KEY, LOG_PATH parameters if they point to the moved directory (which is the default location).

Who should manage HarperDB once installed?

Even the installation can be managed by a new developer.  Once installed HarperDB is capable of being managed by developers of all levels.  No need to hire database administrators, HarperDB provides the needed tools to see your data and see the state of the system HarperDB is running with.

Are Hash Attributes Case Sensitive?

When using HarperDB, hash attributes are case sensitive. This can cause confusion for developers. For example, if you have a user table, it might make sense to use user.email as the hash attribute. This can cause problems as Harper@harperdb.io and harper@harperdb.io would be seen as two different records. We recommend enforcing case on hash within your app to avoid this issue.