Skip to content

Basic Data Types

Data types are configured within the datatype object using the object type.

1
2
3
4
5
6
7
"settings": {
   "output_columns": [
        {
            "name": "a_string_column",
            "datatype": {
                "type": "string",
                .........

Basic Types⚓︎

The following are supported.

Type Indexed Nullable Description Stored as
boolean Yes (Default) Yes Converted to a uint8 prior to storage. The case-insensitive strings "false" or "0" get converted to 0. Any other non-0 value gets converted to 1. uint8
double No (cannot be indexed). Yes A 64-bit floating-point number. float64
int8 Yes (Default) Yes A signed 8-bit integer (-128 : 127). int8
int32 Yes (Default) Yes A signed 32-bit integer (-2147483648 : 2147483647). int32
int64 Yes (Default) Yes A signed 64-bit integer (-9223372036854775808 : 9223372036854775807). int64
ip Yes (Default) Yes A 128-bit datatype designed to support both IPv4 and IPv6 addresses. Read more at IP data type IPv6
string Yes (Default) Yes A variable-length string. Equivalent to VARCHAR or CLOB in other data systems. string
uint8 Yes (Default) Yes An unsigned 8-bit integer (0 : 255). uint8
uint32 Yes (Default) Yes An unsigned 32-bit integer (0 : 4294967295). uint32
uint64 Yes (Default) Yes An unsigned 64-bit integer (0 : 18446744073709551615). uint64
uuid Yes (Default) Yes A standard 128-bit type for storing hexadecimal Universally Unique Identifiers as defined by RFC 9562, ISO/IEC 9834-8:2014 uuid

Nullables⚓︎

Nullables in Hydrolix are not directly defined in the type and instead are defined by the default setting within the datatype object. By default all columns (except primary columns) are nullable, to make a field non-nullable a default is set forcing a value if one is not provided.

It should be noted that the default setting should be appropriate to the type, for example, setting "" (empty string) for the type uint64 will cause unexpected and likely unwanted behaviours.

Performance, Nulls and Strings

Hydrolix has seen performance improvements in query times if nulls are not required. For example setting a string default set as "" (empty string).

"settings": {
   "output_columns": [
     {
            "name": "nullable_string",
            "datatype": {
                "type": "string",
                "default": null
            }
        },
        {
            "name": "non_nullable_string",
            "datatype": {
                "type": "string",
                "default": ""
            }
        },
        {
            "name": "nullable_uint64",
            "datatype": {
                "type": "uint64",
                "default": null
            }
        },
        {
            "name": "non_nullable_string",
            "datatype": {
                "type": "uint64",
                "default": 0
            }
        },
     ..................

Indexing⚓︎

Hydrolix has been specifically designed to index by default, without the traditional penalties found in older data platforms. It is therefore strongly suggested that the user should only turn off indexing of a column when absolutely necessary. By default Hydrolix indexes all basic data types except doubles.

Indexing is enabled/disabled within the datatype descriptor in Output Columns.

"settings": {
   "output_columns": [
        {
            "name": "indexed_string_column",
            "datatype": {
                "type": "string",
                "index": true
            }
        },
        {
            "name": "not_indexed_string_column",
            "datatype": {
                "type": "string",
                "index": false
            }
        }
    ]
}