Skip to main content

FairCom Glossary

This glossary defines the major technical terms used by FairCom products.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Glossary

ACE

Advanced C (core) Engineering (ACE), see ACE APIs.

ACE APIs

Advanced C Engineering APIs (ACE APIs) include FairCom's ISAM, CTDB, and Low-level ACE API.

Each of these APIs use the Record Buffer Method for processing data at high speed with high efficiency. ACE APIs are ideal for C and C++ because these languages are designed to work with record buffers. Higher-level languages, such as Java and C#, can also use these APIs with almost the same efficiency as C or C++.

ACID

ACID is short for Atomic, Consistent, Isolated, and Durable. ACID refers to a database's ability to support multi-statement transactions that are ACID-compliant.

An ACID-compliant database server allows multiple accounts to connect to the server and access all data simultaneously as if each account is the only one working with the data. Transactions allow multiple actions to be run, committed, and rolled back as a single unit. A transaction reports success only if all parts of it succeed and if any part fails, the database server rolls back all the changes.

Atomicity ensures all actions made by a transaction are committed all-or-nothing.

Isolation ensures all changes within a transaction are not visible to other accounts until committed.

Consistency ensures data changes follow all data rules, such as foreign keys referencing existing records in other tables.

Durability ensures committed record changes are reliably stored even during a server failure.

AMQP

AMQP is short for Advanced Message Queuing Protocol, which is an industry-standard messaging protocol. It allows clients to publish messages to message brokers for guaranteed delivery to subscribers. It is optimized to distribute each message to a different subscriber. This is a simple and effective way to parallelize data processing to increase throughput. AMQP can also publish the same message to many subscribers.

MQTT is another industry standard messaging protocol that is simpler to implement and use than AMQP. MQTT is optimized for publishing each message to many subscribers. MQTT can also distribute each message to a different subscriber.

jsonAction works over AMQP and MQTT.

API

Application Programming Interface (API) is a type of software interface that provides a service to other software. 

API Explorer

API Explorer is FairCom's user interface for interacting with FairCom's JSON APIs, which include JSON Admin API, JSON DB API, JSON Hub API, and JSON MQ API.

API Explorer contains JSON examples for every action and property. With a single click or by pressing CTRL+ENTER you can run any JSON action and see the results. You can save and load your own sets of actions. You can load tutorials containing multiple examples of actions that accomplish a specific task.

API Explorer is embedded in the several of FairCom's browser-based applications including Data Explorer and MQ Explorer.

bidirectional connector

A bidirectional connector can receive data from a device and send data to a device. In other words, it works as an input, an output, or both.

In FairCom Edge, when an input connector receives data, the FairCom server converts it into a record and inserts it into the integration table that is mapped to the input. When an output is connected to an integration table, the FairCom server converts the record to the format used by the output and it delivers resulting data to the output. For example, MQTT is a bidirectional connector because it receives input messages from MQTT publishers and delivers output messages to MQTT subscribers.

An integration table is not controlled by any one connector. Many input and outputs can be mapped to the same integration table.

BIGINT

BIGINT is a FairCom database field type containing a signed integer number, such as -9223372036854770000. It is stored in a record as a signed 64-bit integer number with a range from -9,223,372,036,854,770,000 to 9,223,372,036,854,770,000.

BINARY

BINARY is a FairCom database field type containing a binary value. It is stored in a record as a series of bytes . It has a fixed length from 1 to 65,500 bytes, which is stored once in the table's header. If a value is smaller than its fixed length, the server uses padding to fill in missing bytes at the end.

binary record

A binary record is a fixed-length or variable-length record stored in a file or table as a single binary value. An application controls the value of each byte in the record. Binary records are stored and retrieved from files or tables using the Record Buffer Method. A server indexes binary records using byte offset techniques.

In contrast, a SQL database allows an application to read and write fields in a record. The SQL database converts field values into the binary record that it stores in a table. A SQL database prevents an application from directly accessing the binary value of a record.

The FairCom database engine simultaneously supports binary records and SQL records. Through FairCom's ISAM, CTDB, and Low-level ACE API, an application can read and write directly to binary records using the Record Buffer Method. This approach allows an application to achieve unequaled data processing speed. Through FairCom's JSON DB APIand SQL APIs, an application can read and write fields in a record. This makes it easy for an application to process data in complex ways. An application can use these APIs simultaneously to achieve optimal performance and capability.

BIT

BIT is a FairCom database field type containing a Boolean value of 0 or 1. It is stored in a record as an 8-bit integer.

CA

A certificate authority (CA) issues digital identity certificates to identify computers to each other using the TLS protocol. Popular CAs include letsencrypt.org and verisign.com.

CA certificate

A CA certificate is a digital identity certificate issued by a public or private certificate authority (CA).

certificate

A digital identity certificate is an electronic document used by TLS to allow an application, such as a web browser, MQTT client, or server, to know when it is communicating with an intended computer rather than a fraudulent computer impersonating the intended computer.

certificate file

A certificate file contains the certficate required by TLS to prove the identity of a computer.

CHAR

CHAR is a FairCom database field type containing a fxed-length, padded string value, such as "my string". It is stored in a record as a series of UTF-8 characters. It has a fixed-length between 1 and 65,500 bytes, which is stored once in the table's header. If a value is smaller than its fixed length, the server uses padding to fill in missing bytes at the end.

CLI

Command Line Interface (CLI) is a program that runs in an operating system terminal or command window. The program is called a command-line utility, command-line interpreter, command-line processor, etc. Some CLI programs are interactive and others are designed to be called from scripting languages. FairCom products include a number of command line utilities.

client certificate

A client certificate is a digital identity certificate that a client computer uses to identify itself to a server computer.

cloud

Cloud is also known as Cloud Computing. The cloud is a centralized location on the Internet hosted by a cloud provider, such as AWS, Microsoft Azure, Google Cloud, etc. In contrast, the edge is any location that is not the cloud.

connector

A connector allows applications and hardware to communicate with each other.

The FairCom Edge server provides a number of connectors that enable the server to communicate with devices, equipment and software. For example, the FairCom EdgeOPC UA connector, enables FairCom Edge to use the OPC UA protocol to connect to any OPC UA enabled device to retrieve data.

There are input connectors, output connectors, and bidirectional connectors that support both input and output from and to the same device. There are also connectors designed for different types of solutions, such as an enterprise connector, IT connector, and IoT connector.

CSR

A certificate signing request (CSR) is a file that contains the identity information needed to create a certificate. A CA creates a certificate by signing a CSR file using its own closely held private key.

CTDB

The c-tree Database API (CTDB API) is FairCom's database API in the ACE family of APIs. It provides high performance with less code than the FairCom's ISAM API. The CTDB API introduces database concepts that are compatible with SQL. It requires records to contain predefined field structures. FairCom's CTDB API provides full control over record processing. This allows developers to implement data processing algorithms that are tailored to precise application needs, and this allows an application to achieve unrivaled performance. FairCom's CTDB API works well in a variety of languages, such as C, C++, Java, C#, and Visual Basic.

FairCom ACE APIs include ISAM, CTDB, and Low-level ACE API.

c-treeRTG

FairCom RTG is a product from FairCom Corporation for COBOL and Btrieve applications. It transparently replaces the data layer of these applications with the same SQL and NoSQL database engine that powers FairCom DB. It is called RTG because it makes COBOL and Btrieve applications "Ready To Go" for the future without requiring any changes to their code. It makes COBOL and Btrieve data immediately available to other systems and third-party tools through SQL, REST, and JSON DB API.

data

Data is a set of values that are collected, cataloged, indexed, and organized into information for querying, searching, and processing by users, applications, and services.

database

A database is a set of data that is managed by a database server. A database contains data that is organized into tables, records, and fields. A database is a huge composite data type that represents a group of interconnected objects. A database allows records to be joined together for querying, searching, and processing by users, applications, and services.

A database is a security container that controls which accounts have permissions to access specific data.

database server

A database server manages data for applications, users, and services. It is the engine that enables records to be joined together for querying, searching, and processing by users, applications, and services.

A database server provides transactions that allow multiple accounts to connect to the server and access all data simultaneously as if each account is the only one working with the data. Transactions allow multiple actions to be run as a group to ensure data is consistent, durable, atomic, and isolated. A transaction reports success only if all parts of it succeed and if any part fails, the database server rolls back all the changes.

A database server also provides highly available services that index, query, update, backup, encrypt, and replicate data.

A database server manages one or more databases and enforces the security permissions of those databases.

Data Explorer

Data Explorer is FairCom's user interface for managing data and database objects in all FairCom products. You can use SQL and the JSON DB API to manage data and database objects, such as databases, tables, indexes, etc.

FairCom browser-based applications are optimized to run in the Google Chrome browser. If the browser is running on the same computer as the FairCom server, you can open FairCom's browser-based applications using the following URL: https://localhost:8443/. You can also run the application from any computer by replacing localhost in the URL with the hostname or IP Address of the FairCom server.

DATE

DATE is a FairCom database field type containing a date value, such as "2022-03-08". It is stored in a record as an unsigned 32-bit integer that represents a specific day in the Gregorian calendar. A date has three parts: year, month, and day. It does not include time or a timezone offset.

DB Monitor

DB Monitoris FairCom's user interface for monitoring the database in all FairCom products. You can monitor connections and database performance to determine the root cause of performance issues.

FairCom browser-based applications are optimized to run in the Google Chrome browser. If the browser is running on the same computer as the FairCom server, you can open FairCom's browser-based applications using the following URL: https://localhost:8443/. You can also run the application from any computer by replacing localhost in the URL with the hostname or IP Address of the FairCom server.

DOUBLE

DOUBLE is a FairCom database field type containing a signed floating point number, such as -179769313.48623158 or 2.2250738585072014e-308. It is stored in a record as an 8-byte, IEEE 754 , binary floating point number. It supports a wide range of numbers and its calculations are fast. It provides 15 to 19 digits of approximate precision. It supports infinity, -infinity, and NaN.

edge

Edge is also known as Edge of the Network. The edge is the furthest point in a network, such as smart phones, IoT sensors, smart appliances, factory equipment, vehicles, cloud gateway services, etc. The edge can be mobile, such as a vehicle, or it can be a fixed location, such as a factory, hospital, office, store, building, data center, etc. In simple terms, the edge is any location that is not in the Cloud.

enriching transform

An enriching transform is one of the primary forms of transforms. It combines data from multiples sources to create more valuable data — for example, looking up data in a database to add new properties to a JSON document or running a machine learning algorithm on the data in a JSON document to classify it and storing the results in the document.

Other types of transforms include reformatting transform and reshaping transform.

enterprise connector

An enterprise connector uses a specific protocol to connect to enterprise solutions including enterprise software, enterprise databases, enterprise applications, enterprise APIs, etc.

FairCom Edgeprovides generic IT Connectors, such as SQL, REST, and JSON action, to connect to enterprise software. FairCom Edgeprovides specific connectors to specific enterprise software, such as ThingWorx.

ERP

Enterprise Resource Planning System (ERP) is integrated software that manages major business processes.

ETL

ETL stands for Extract, Transform, and Load. This technique is widely used in data engineering and business intelligence to extract data from a database, transform that data, and load it into another database (typically a SQL data warehouse or a data lake). A variation of ETL is ELT where data is extracted from one database, loaded into another database, and transformed in the target database. There are many mature ETL software tools that perform this operation with little-to-no code.

All major ETL and ELT tools are compatible with FairCom DB through its built-in ODBC and JDBC drivers. FairCom DB can be the source or target of ETL and ELT operations.

FairCom DB

FairCom DB is FairCom Corporation's flagship database product. It is optimized for high-speed transaction processing of JSON documents and binary records.

FairCom DB Notify

The FairCom DB Notify service plugs into FairCom DB or FairCom RTG and publishes data change messages to FairCom MQ, which notifies subscribers of inserts, updates, and deletes. Each data change event is a simple JSON message.

The FairCom DB Notify service is useful for synchronizing software systems with data in a FairCom database. JSON configuration defines which tables, records, and data change events to publish to MQTT topics. Any software can subscribe to these topics to process these data change events. Subscribers can include microservices, web services, and databases from other vendors.

FairCom DB server

FairCom DB server is a database server with JSON and Record Buffer APIs. It uses JSON for all data and for all operations, which include storing, querying, updating, and managing data. FairCom DB provides JSON APIs for managing all aspects of the database server.

The primary JSON API for FairCom DB is the JSON DB API, which manages databases, schemas, tables, indexes, records, queries, cursors, and transactions. The JSON Admin API is shared across all FairCom products and manages sessions, users, roles, permissions, and plugins.

FairCom Edge

FairCom Edge is an Industrial IoT (IIoT) platform that uses IoT protocols to bridge to and from OT and IT protocols. It is an integration hub that allows you to connect, monitor, and control factory equipment, PLCs, and sensors. It supports a variety of integration protocols, formats, and technologies to connect virtually any devices, equipment, and sensors to each other. It helps you build modern, scalable, full-featured IIoT solutions.

FairCom Edgeconverges the following technologies into one server: an MQTT Broker, Protocol Bridge, NoSQL JSON database, SQL database, JSON APIs, transform pipelines, OPC UA client, Modbus client, ThingWorx connector, Siemens UDT to JSON converter, JSON to table converter, table to JSON converter, etc. All features are configured by sending JSON to the server.

FairCom MQ

FairCom MQ is an MQTT Broker sold by FairCom Corporation. It is optimized to run on the edge of the network for mission critical use cases where messages cannot be lost and message order must be maintained. It can be embedded in applications or run as an independent server. It is fully integrated with an embedded version of FairCom DB database server. MQTT messages are automatically stored in tables and can be accessed through the builtin SQL and JSON DB API. MQTT messages can be transformed using the builtin transformation engine, which can reshape, reform, and enrich messages.

External instances of FairCom DB can use the FairCom DB Notifyservice to publish data change messages to FairCom MQ. This allows subscribers to be notified of inserts, updates, and deletes in FairCom DB so they can synchronize its data changes with other systems, such as microservice caches, web services, and databases from other vendors.

FairCom Server

Each of FairCom's products is a server process that runs on a computer. The server listens for requests and returns responses.

All FairCom products support the jsonAction protocol running over the HTTP and WebSocket protocols, and support SQL and ISAM protocols running over TCP/IP. FairCom MQ and FairCom Edge products also support the MQTT protocol, which pushes messages from publishers to subscribers.

The FairCom server is unique in that it can be embedded in an application. This immediately extends the capabilities of an application with server features, such as messaging, database management, SQL queries, JSON queries, data transforms, and connectors to other protocols.

field

In a FairCom server, data is stored in fields, records, tables, and databases. A field contains a specific type of data, such as a person's name or a data collection timestamp. Each field has a field type. A record contains one or more fields. A table contains zero or more records. Each field has a predefined data type, such as JSON, INTEGER, NUMERIC, VARCHAR, DATE, TIME, TIMESTAMP, etc. 

A FairCom table may have up to 2500 fields and zero or more of those fields may have a JSON type.  Each field (or group of fields) may be indexed by one or more indexes with a maximum of 500 indexed fields. One or more individual properties inside a JSON field may also be indexed.

hostname

A hostname uniquely identifies a computer on a TCPIP network.

Each computer in a TCP/IP network usually has a hostname assigned to it by a DNS server. When software tries to open a URL, it connects to a DNS server, retrieves the actual IP Address and uses it to connect to the computer.

HTTP

Hypertext Transfer Protocol (HTTP) is a standard request-response protocol that works on top of TCP/IP. It allows a client computer to send a request to a server computer, which in turn, replies to the request. The purpose of HTTP is to allow software to ask questions and receive answers.

HTTPS

Secure Hypertext Transfer Protocol (HTTP) is the HTTP protocol running over TLS. It provides secure request-response communications between computers.

https://localhost:8443/

This URL launches a menu for running the FairCom browser-based applications. It works when a Google Chrome web browser runs on the same computer where the FairCom server is running.

Google Chrome may complain that your connection is not private. To resolve this issue see Solve certificate security problems in Google Chrome. FairCom browser-based applications are safe and become more secure when you replace FairCom's default certificate with your own security certificate.

If https://localhost:8443/ does not work, try https://127.0.0.1:8443/ . Also make sure the FairCom server is running.

When running the Google Chrome web browser and the FairCom server on different computers, change localhost to the hostname or IP Address of the server where the FairCom server is running.

ID

Tables created by the JSON DB API have an identifier (ID) field known as "id" that uniquely identifies each record. It is the primary key of the record. It is stored as a BIGINT, which is a signed, 64-bit integer. When records are inserted, the FairCom database server automatically populates the value of the "id" field with a unique integer value.

input connector

An input connector is a connector that retrieves data from a device and brings it into a server.

In FairCom Edge, an input connector converts a device protocol into JSON, and stores the JSON into a record in an integration table . Each time a record is stored in an integration table, FairCom Edge can automatically reformat, reshape, enrich, and deliver the resulting data to one or more output connectors.

Many input connectors of any type can be connected to the same integration table; thus, many input connectors can gather data from many sources and insert the data into the same integration table.

INTEGER

INTEGER is a FairCom database field type containing a signed integer number, such as -2147483648. It is stored in a record as a signed 32-bit integer number with a range from -2,147,483,648 to 2,147,483,647.

integration table

An integration table is an enhanced database table used by FairCom Edge and FairCom MQ. It is enhanced to do the following things automatically: collect data from input connectors, add time series data, transform data, and push data to output services with guaranteed delivery.

Internet

The Internet is a global network of networks that allows computers to communicate with each other. This is possible because it defines a standard set of communication protocols.

IoT

Internet of Things (IoT) uses Internet protocols to connect things to software. Things include devices, equipment, appliances, vehicles, and so forth.

Each thing must contain an embedded computer processor and must use an IoT protocol, such as MQTT, to communicate with software.

Since 2014, MQTT has become the standard Internet protocol for IoT. MQTT is necessary because devices need to push information when it is created, such as a status update, an alert, telemetry, or a command. MQTT is used in IoT because HTTP is a request/response protocol that cannot push information.

IoT connector

An IoT connector uses IoT and OT protocols to connect software to devices, equipment, and software.

FairCom Edgeprovides MQTT to connect to IoT devices, equipment, and other MQTT brokers.

FairCom Edgeprovides Modbus and OPC UA connectors for connecting to OT devices and equipment.

FairCom Edgeprovides the ThingWorx connector for creating digital twins in ThingWorx of data collected by the FairCom server. This connector uses the ThingWorx AlwaysOn protocol.

IP

Internet Protocol (IP) is the official Internet addressing scheme for uniquely identifies computers in network communications, see RFC 792. IP makes it possible to create networks of networks of computers.

IP Address

Internet Protocol Address (IP Address) uniquely identifies each computer in a TCP/IP network. An IP Address has a standard format, such as 127.0.0.1.

ISAM

Indexed Sequential Access Method (ISAM) is FairCom's primary ACE API. ISAM uses the Record Buffer Method, which gives the application full control over the contents of the entire record buffer to store structured or unstructured data.

FairCom's ISAM API provides full control over record processing. This allows developers to implement data processing algorithms that are tailored to precise application needs, and this allows an application to achieve unrivaled performance. FairCom's ISAM API works best in the C and C++ languages.

FairCom ACE APIs include ISAM, CTDB, and Low-level ACE API.

IT connector

An IT connector uses IT protocols to connect software, such as applications, databases, and middleware.

FairCom Edge provides ODBC and JDBC for connecting to enterprise SQL databases, such as Oracle, MySQL, PostgreSQL, Microsoft SQL Server, IBM DB2, and so forth.

FairCom Edgeprovides REST and JSON for connecting to enterprise software, such as applications, APIs, web services, microservices, etc.

FairCom Edgeprovides MQTT for connecting to message-oriented middleware including MQTT message brokers, AMQP message brokers, and classic MQ solutions, such as IBM MQ.

JSON

JavaScript Object Notation (JSON) is a simple format for representing data. It requires very little markup and is flexible enough to represent the majority of data structures. It is self-describing, which makes it ideal for schemaless applications and search. It can optionally be paired with a schema to define an expected structure.

jsonAction

The JSON Action Protocol (jsonAction) is like REST, jsonAction is a standard way of using JSON to execute actions on remote computers by sending a JSON Action request to a server and receiving back a JSON response. All information needed in a request and its response is included in the JSON. This allows jsonAction to work over any protocol including HTTP, HTTPS, WS, WSS, MQTT, MQTTS, etc.

jsonAction improves on REST by putting all request information in JSON. In contrast, REST spreads request information across a URL, query string, HTTP header, HTTP verb, and HTTP payload. Similarly, jsonAction puts all response information in JSON, whereas REST spreads response information across the HTTP header and HTTP payload. Lastly, REST only works over HTTP whereas, jsonAction works over any protocol including asynchronous protocols.

JSON action

A JSON action is a JSON document sent to a server to request the server to perform an action. The server performs the action and returns a JSON Response. A JSON Action uses the properties and behaviors defined in the jsonAction specification.

Example 1. Simple jsonAction request
{  
  "action": "someAction",
  "params": {}
}


JSON Admin API

The JSON Admin API logs into and out of FairCom servers and manages sessions, services, etc. All its API actions are available in all FairCom products.

This API is part of FairCom's family of JSON APIs.

JSON APIs

JSON APIs are FairCom's family of APIs that use jsonAction to interact with a FairCom server. They are optimized for client server computing and ease of use in all programming languages. They provide maximum data flexibility.

JSON array

A JSON array contains one or more JSON values. Each JSON value may be any JSON type. An array starts with the [ character, contains zero or more values separated by the comma (, ) character, and ends with the ] character, such as [ 1, 2, 3] or [ "a", "b", "c"].

JSON Boolean

A JSON Boolean value is true or false.

JSON data type

The JSON data type is a field type in the FairCom server. Its length can be up to 2 billion bytes or be limited to a length between 1 and 65,500 bytes. The JSON data type is flexible because it may contain any number and various properties and values, including objects, arrays, strings, numbers, true, false, and null.

JSON DB API

The JSON DB API uses JSON over HTTP to manage databases, tables, indexes, records, queries, cursors, and transactions. It is available in all FairCom products.

This API is part of FairCom's family of JSON APIs.

JSON Hub API

The JSON Hub API configures and manages data integrations and transformations between input and output connectors. All its API actions are available in FairCom Edge and some are available in FairCom MQ.

This API is part of FairCom's family of JSON APIs.

JSON MQ API

The JSON MQ API configures and manage FairCom's MQTT broker. It is available in FairCom Edge and FairCom MQ.

This API is part of FairCom's family of JSON APIs.

JSON null

A JSON null value is null.

JSON number

A JSON number value is a signed, decimal floating point number. It is represented as a sequence of ASCII numeric digits with an optional + or - character at the beginning and an optional decimal point in the middle, such as -91.2247.

JSON object

A JSON object is a set of JSON properties. Each JSON property in an object must have a unique name. An object starts with the { character, contains zero or more properties separated by the comma (, ) character, and ends with the } character.

JSON property

A JSON property has a name and a value where the name may be any string value and the value may be set to any JSON type.

JSON request

A JSON request is a JSON document sent to a server to request it to perform a JSON action. A JSON request uses the properties and behaviors defined in the jsonAction specification.

Example 2. Simple request
{
  "action": "someAction",
  "params": {}
}


JSON response

A JSON response is a JSON document sent from a server in response to a client requesting the server to perform a JSON action. A JSON response uses the properties and behaviors defined in the jsonAction specification.

Example 3. Simple response
{
  "result": {},
  "errorCode": 0,
  "errorMessage": ""
}


JSON RPC

JSON Remote Procedure Call (JSON RPC) is a technique for running procedures, methods, commands, or actions on a remote computer.

FairCom servers use the jsonAction protocol, which uses JSON to execute remote procedure calls on a server.

JSON Schema

JSON Schema is a standard for validating JSON documents. It requires a schema to be defined in one JSON file and uses that file to validate the content of another JSON file.

A JSON database may use a JSON Schema to validate the structure of a JSON document before it stores it in its database. This ensures data is complete and valid so that it can be queried reliably.

JSON Schema is not to be confused with SQL Schema.

JSON string

A JSON string value is a sequence of UTF-8 characters enclosed by double quotes.

JSON type

JSON consists of one or more JSON values that can be nested inside each other.

Each value is one of the data types: JSON object, JSON array, JSON string, JSON number, JSON Boolean, or JSON null.

JSON value

A JSON value is the building block of JSON . A JSON value can stand alone or can be nested inside another JSON value.

Low-level ACE API

The Low-level ACE API is FairCom's lowest level API. It provides total control over every detail of index and table creation and management. It requires the most code and provides maximum control for maximum server-side performance. It works best in the C and C++ languages.

FairCom ACE APIs include ISAM, CTDB, and Low-level ACE API.

LVARBINARY

LVARBINARY is a FairCom database field type containing a variable-length binary value. It is stored as a variable-length sequence of bytes up to 2 Gigabytes in length. Each LVARBINARY field in each record includes a four-byte length header.

LVARCHAR

LVARCHAR is a FairCom database field type containing a variable-length string, such as "my string". It is stored as a variable-length sequence of bytes up to 2 Gigabytes in length. Each LVARCHAR field in each record includes a four-byte length header. The bytes are interpreted as UTF-8 encoded characters.

Modbus

Modbus is a binary server/client communication protocol developed and published by Modicon for transmitting data to and from electronic devices over a serial bus or TCP/IP network.

MONEY

MONEY is a FairCom database field type containing a signed decimal number, such as -12345678900.0001. It is stored in a record as a signed, fixed-point decimal number with 32 digits of precision. It consumes 19 bytes of storage. The "scale" property specifies 2 or 4 digits to the right of the decimal point. The remainder of the precision is to the left of the decimal point.

MQ Explorer

MQ Explorer is FairCom's user interface for managing its MQTT broker, which is part of the FairCom Edge and FairCom MQ products.

It provides a dashboard for tracking MQTT clients, topics, and messages. It also includes an MQ client that can publish and subscribe to messages. It also includes API Explorer for configuring the product.

FairCom browser-based applications are optimized to run in the Google Chrome browser. If the browser is running on the same computer as the FairCom server, you can open FairCom's browser-based applications using the following URL: https://localhost:8443/. You can also run the application from any computer by replacing localhost in the URL with the hostname or IP Address of the FairCom server.

MQTT

Message Queueing Telemetry Transport (MQTT) is the Internet standard protocol for publishing and subscribing to messages that are sent to topics on an MQTT broker (see MQTT.org for more information).

MQTT 3

MQTT 3 represents either of the two MQTT 3 protocols: MQTT 3.1 and MQTT 3.1.1.

MQTT 3.1

MQTT 3.1 is one of the four MQTT protocols. As of 2022, it is rarely used; thus, it is mostly useful for historical purposes. It is published by IBM. FairCom recommends using MQTT 3.1.1 or MQTT 5.

There are currently four MQTT specifications – one for each of the four versions of the protocol: MQTT 3.1, MQTT 3.1.1, MQTT 5, and MQTT-SN v1.2.

MQTT 3.1.1

MQTT 3.1.1 is one of the four MQTT Protocols. As of 2022, it is the most commonly used by MQTT Clients. It is adequate for most applications and supported by all major MQTT brokers. In the MQTT wire protocol, it is identified as MQTT version 4.

There are currently four MQTT specifications – one for each of the four versions of the protocol: MQTT 3.1, MQTT 3.1.1, MQTT 5, and MQTT-SN v1.2.

MQTT 5

MQTT 5 is one of the four MQTT Protocols. As of 2022, it is the most advanced MQTT protocol available to MQTT clients and MQTT brokers. MQTT 5 is supported by many MQTT Clients and MQTT brokers.

It provides advanced features, such as a shared message subscription, which is useful for distributing messages across subscribers for parallel processing. For example, an MQTT broker takes each message published to a shared topic and sends it to a different subscriber. In contrast, a normal subscription receives all messages published to a topic.

MQTT broker

An MQTT broker is a server that implements one or more of the four MQTT protocols. One or more MQTT clients can connect to the broker to publish messages to topics and they can subscribe to topics to receive published messages. The broker provides quality of service guarantees for message delivery.

MQTT client

An MQTT client can publish messages to topics managed by the broker. It can also subscribe to messages that are sent to topics managed by the broker.

MQTT Death Certificate Message

MQTT Death Certificate Message is also known as a MQTT LWT message or an MQTT Going Offline message.

An MQTT broker sends this message on behalf of a client when a client disconnects intentionally or unintentionally. The topic, payload, and properties of the message are optionally defined by a client when it connects.

MQTT Going Offline Message

MQTT Going Offline Message is also known as MQTT LWT and MQTT Death Certificate Message.

An MQTT broker sends this message on behalf of a client when a client disconnects intentionally or unintentionally. The topic, payload, and properties of the message are optionally defined by a client when it connects.

MQTT LWT

MQTT Last Will and Testament (MQTT LWT) is also known as an MQTT Death Certificate Message or an MQTT Going Offline Message.

An MQTT broker sends this message on behalf of a client when a client disconnects intentionally or unintentionally. The topic, payload, and properties of the message are optionally defined by a client when it connects.

MQTT protocol

An MQTT protocol is one of the four communication protocols defined by OASIS, the Organization for the Advancement of Structured Information Standards. As of 2022, there are four versions of the protocol: MQTT 3.1, MQTT 3.1.1, MQTT 5, and MQTT-SN v1.2. At the binary level, each version of the protocol is incompatible with the others. An MQTT broker supports one or more MQTT protocols. As of 2022, MQTT 3.1 is the most popular and widely supported version of the protocol.

MQTT Retained Message

The MQTT Retained Message is also known as MQTT Birth Certificate or MQTT Coming Online message. An MQTT broker automatically sends this message to an MQTT client when it newly subscribes to a topic. It is useful for communicating device information and status to new subscribers.

An MQTT client can add the retained flag to any MQTT message that it publishes to a topic, and the MQTT broker will replace the existing retained message with the new one.

MQTTS

Secure Message Queueing Telemetry Transport (MQTTS) is the MQTT protocol running over TLS. It provides secure messaging between computers.

MQTT-SN

MQTT For Sensor Networks (MQTT-SN) is an MQTT protocol optimized for battery powered devices communicating over a wireless network that may not use TCP/IP Addresses to connect to each other, such as ZigBeeR or Z-Wave.

In contrast, the other MQTT protocols are designed to work over TCP/IP and assume a continuous connection; thus, they require an MQTT client to send MQTT packets to an MQTT broker on a regular basis, such as every 10 seconds. This approach consumes too much power for battery powered devices.

As of 2022, MQTT-SN v1.2 is the latest version of the MQTT for Sensor Networks (MQTT-SN) protocol. A few MQTT brokers and MQTT clients implement this protocol.

MQTT specification

Each version of MQTT has a separate MQTT specification that defines how that MQTT protocol works. The latest MQTT specifications are official OASIS standards.

There are currently four MQTT specifications – one for each of the four versions of the protocol: MQTT 3.1, MQTT 3.1.1, MQTT 5, and MQTT-SN v1.2.

MQTTWSS

Message Queueing Telemetry Transport over WebSocket Secure (MQTTWSS) is the MQTT protocol running over TLS and WebSocket. It provides secure messaging between computers. It is typically used by single-page browser applications.

NAV

FairCom's Navigational (NAV) APIs use the Record Buffer Method to navigate records forward and backward within a file in table or index order. These APIs include FairCom's ISAM, CTDB, and JSON DB API.

network

A computer network connects computers so they can communicate with each other. The Internet is the ultimate computer network because it is a network of networks.

NUMERIC

NUMERIC is a FairCom database field type containing a signed decimal number, such as -12345678900.000000123. It is stored in a record as a signed, fixed-point number that always consumes 19 bytes of storage.

OPC UA

Open Platform Communications Unified Architecture (OPC UA) is a machine-to-machine communication protocol for industrial automation. OPC UA is the latest, easiest, and most robust protocol from the OPC Foundation.

The FairCom Edgeprovides a connector to OPC UA to bridge data from OPC UA devices to other protocols, including MQTT, JSON, and SQL.

output connector

An output connector is a connector that a server sends to a device, equipment, protocol, or software.

FairCom Edge provides multiple output connectors that connect to Thingworx, SQL, MQTT, etc. Each output connector is connected to an integration table. Each time a record is inserted into the integration table, FairCom Edge sends that record to the output connector. The output connector retrieves data from the inserted record, and delivers it to devices, equipment, and software that are registered to receive the data.

Many output connectors of any type can be connected to the same integration table; thus, each record inserted into an integration table can be delivered to many outputs.

For example, FairCom Edge's MQTT connector allows any MQTT 3 and MQTT 5 client to subscribe to any topic. Each topic is assigned to an integration table. Each MQTT message sent to the topic is stored in the corresponding integration table and then is automatically published to all subscribers of that topic. Additional connectors can be mapped to the same integration table to deliver data ot other solutions, such as ThingWorx.

padding

Padding is a feature of the CHAR and BINARY field types. These fieldtypes have a fixed-length that is specified when they are created. Padding allows an application to fill part of the value of one of these fields and the server will fill out the remaining length with a pad character. The pad character defaults to the 0x00 byte. Each table can have its own user-defined pad character.

PLC

Programmable Logic Controller (PLC) is an industrial computer with electrical inputs and outputs that has been ruggedized and adapted for the control of manufacturing processes, such as assembly lines, machines, robotic devices, or any activity that requires high reliability, ease of programming, and process fault diagnosis.

plugin

A plugin is a library that a server loads dynamically to provide one or more services. A plugin adds capabilities to the server.

FairCom Edge comes with multiple plugins. One plugin collects OPC UA data, another collects Modbus data, another transforms Siemens UDT into JSON, another sends data to ThingWorx, and so forth. Customers can also create plugins. FairCom plugins have a standard interface that is implemented in C or C++ and compiled as a Windows DLL, a linux SO, or a MacOS dylib.

A FairCom server can be configured to load multiple instances of a plugin library and configure each instance separately, such as configuring it to use different ports and different settings. Therefore, a plugin can be loaded multiple times to provide its set of services multiple times. This is useful to scale the throughput of a plugin or to specify the settings of each plugin instance to provide specialized services. Additionally, a single plugin may implement multiple services.

plugin service

A plugin service is a service provided by a plugin. A single plugin can provide one or more services.

primary key

A primary key is the primary identifier of a record in a database table. It is the primary way to look up records in a table. It is always indexed with a unique, non-null index that ensures each inserted record is uniquely identified. A primary key index includes one or more fields in a table.

The best practice is for a primary key to consist of one field named "id" that the server automatically populates with a unique identifier each time a record is inserted.

private key

A private key is the secret required by TLS to prove the identity of a computer. It is the private key of the public-private key pair that is used to create a computer's digital identity certificate. It is stored in a private key file.

private key file

A private key file is a file that contains the private key required by TLS to prove the identity of a computer. The private key file contains the private key of the public-private key pair that is used to create a computer's digital identity certificate . The private key file typically has the extension, .key, such as server.key or client.pem.

protocol

A protocol is a defined set of rules for communicating between systems. There are hundreds of communication protocols used by IT, OT, IoT, and IIoT systems. A major cost of integrating systems is writing software or buying hardware to perform the translations required to communicate between systems.

An Integration Hub, such as FairCom Edge, is designed to reduce integration costs by providing built-in translations between protocols. Communication protocols can be categorized as a push protocol, pull protocol, or query protocol. Push, pull, and query protocols are traditionally incompatible with each other, but an Integration Hub, such as FairCom Edge, is designed to automatically bridge across all types of protocols.

protocol transform

A protocol transformation converts between protocols, such as converting from the Modbus protocol to MQTT. During a protocol transformation, data is often transformed as well.

FairCom Edge converts a variety of protocols into JSON and stores the JSON into records in integration tables. For example, it can read the Modbus protocol, gather Modbus data from device registers, convert Modbus binary data into JSON, and store the resulting JSON in integration tables. Once data is in JSON, FairCom Edge can use output protocols to deliver it to other systems, such as Thingworx, SQL, and MQTT.

Some products, such as FairCom Edge can automatically translate across incompatible protocols, such as from MQTT to SQL, MQTT to REST, SQL to REST, Modbus to REST, OPC UA to JSON, etc.

Protocols are incompatible when they communicate in fundamentally different ways. For example MQTT pushes messages, REST requests current information, SQL queries sets of data, OPC UA and Modbus poll devices for telemetry.

FairCom Edgecan translate across incompatible protocols because of the way it uses its high-speed, embedded database to bridge to push, pull, and query protocols.

PTC

PTC is an American computer software and services company. PTC products and services include Internet of things (IoT), augmented reality (AR), and collaboration software.

FairCom Edge provides a connector that integrates with PTC's ThingWorx product.

public-private key pair

A public-private key pair is a pair of asymmetrical keys. The private key can encrypt a secret and only the public key can decrypt that secret. This also works in reverse where the public key can encrypt a secret and only the private key can decrypt that secret.

pull protocol

A pull protocol is a request/response protocol. Client software sends a request to a server to ask for data. The server responds by sending data to the client. A pull protocol asks a specific question to get back the current value of a specific type of information, such as the value of a device register, the current time, or the profile of a specific user.

In IoT, pull protocols include OPC UA and Modbus. In IT, pull protocols include REST, JSON/HTTP, and SQL.

In contrast, a query protocol differs from a pull protocol in that it asks for some combination of filtered, aggregated, and joined sets data that are stored in a repository of data, such as a database.

push protocol

A push protocol allows a client to push messages to a server and the server pushes these messages to clients. The server may offer various guarantees of message delivery.

Push protocols have the advantage of sending notifications when events occur. This is particularly important for environments that need to be alerted when critical events occur, such as medical equipment emergencies and equipment failure in manufacturing. Pushing data is also useful for sending telemetry when it is available or when it has changed rather than repeatedly polling a device for the latest value.

MQTT is a push protocol. At any time, a client can publish an MQTT message to any topic on an MQTT broker. Any MQTT client can subscribe to any topic on an MQTT broker and the broker pushes received messages to subscribing clients. MQTT 3 can only push messages. MQTT 5 has an option to reply to pushed messages.

query protocol

A query protocol is a variation of a request/response protocol. Client software sends a query request to a server to ask for data. The server responds by sending data to the client. A query protocol asks for some combination of filtered, aggregated, and joined sets data that are stored in a repository of data, such as a database.

In contrast, a pull protocol asks the current value of a specific type of information, such as the value of a device register, the current time, or the profile of a specific user.

In IT, query protocols include SQL, REST, GraphQL, and JSON action.

RAM

Random Access Memory (RAM) is fast, volatile storage that a computer uses to store data. Data in volatile storage is lost when a computer loses power or is turned off. Thus, computers write important information, such as database records to nonvolatile storage, such as file on a durable storage system.

FairCom products and APIs are designed to bridge the gap between volatile and nonvolatile storage. The FairCom uses the Record Buffer Method, which is the fastest technique to move data from a durable storage system into RAM and back. The FairCom JSON DB API is the easiest and most flexible way to move data from a durable storage system into RAM and back. The FairCom is the most traditional way. All these APIs provide transactional durability guarantees, automatic caching, and data replication across storage systems.

REAL

REAL is a FairCom database field type containing a signed floating point number, such as -34028234.664 or 1.1754943508e-38. It is stored in a record as a 4-byte, IEEE 754 , binary floating point number. It provides 6 to 9 decimal digits of approximate precision. In contrast, DOUBLE provides 15 to 19 digits of approximate precision. REAL also supports infinity, -infinity, and NaN.

record

A record contains data about one thing. A record describes the attributes of a thing using one or more fields. Zero or more records exist in a table; thus, a table contains data about zero or more things.

Different systems represent records differently. A JSON database represents each record as a JSON document. SQL represents each record as a row containing one or more columns of data. ISAM represents each record as a binary buffer of raw bytes.

FairCom products are unique because the FairCom database engine simultaneously supports these different record formats. The same record can be updated and queried simultaneously as JSON, a SQL row, or a binary buffer using the JSON DB API.

record buffer

A record buffer is a sequence of bytes allocated by an application to represent a record. A record buffer can be stored in RAM, a file, or a database table. An application has full control over the contents of the buffer using the Record Buffer Method.

FairCom servers provide Record Buffer APIs: ISAM API, CTDB API, and Low-level ACE API.

Record Buffer APIs

FairCom ACE APIs are Record Buffer APIs because they use the Record Buffer Method.

FairCom ACE APIs include ISAM, CTDB, and Low-level ACE API.

Record Buffer Method

The Record Buffer Method is a technique for an application (typically C or C++) to retrieve a record from a file on disk and load it into an application's record buffer for reading and editing. When an application has finished editing the buffer, it writes the buffer back to disk. Because an application allocates a buffer in RAM, the Record Buffer Method is the fastest way to map data on disk to data in an application.

An application typically uses an API, such as FairCom's ISAM or CTDB API, to manage the process of reading and writing records to disk. A mature API can batch process multiple records at a time using arrays of buffers. The Record Buffer Method is exceptionally fast, efficient, and provides predictable performance because it transfers data directly from RAM to disk and vice versa.

reformatting transform

Reformatting transform is one of the primary forms of Data Transforms that changes how the data is stored as bit and bytes — for example, reformatting a binary BSON document to a textual JSON document.

Other types of transforms include reshaping transform and enriching transform.

request-response

In a request-response protocol, a client sends a request to a server and receives a response. This simple technique is the most common form of client-server communications. Because a server cannot push requests to a client, the client is protected from external push attacks.

The jsonAction protocol is a request-response protocol.

reshaping transform

Reshaping transform is one of the primary forms of Data Transforms that changes how the data is organized — for example, converting deeply nested data in an object into a flat set of properties in a record.

Other types of transforms include reformatting transform and enriching transform.

REST

Representational State Transfer (REST ) is a computer communication protocol that runs actions on a remote computer. It requires HTTP to send requests and receive responses. REST spreads request and response information across a URL, query string, HTTP header, HTTP verb, and HTTP payload.

In contrast, the jsonAction protocol is simpler and easier to use because it encapsulates all information in JSON, and it works over any communication protocol.

RPC

Remote Procedure Call (RPC) is an API pattern that executes a procedure on a remote server and returns the result. The RPC pattern is one of the most effective techniques for creating distributed client/server programs.

FairCom provides jsonAction APIs that use JSON to invoke actions and return responses.

server certificate

A server certificate is a certificate that a server computer uses to identify itself to client computers.

service

A service is a capability provided by the server. A FairCom server has many built-in services, including the ability to listen, process, and respond to SQL statements over a TCP/IP port, and the ability to respond to JSON action commands over HTTP and WS. FairCom Edge provides additional services. A service can implement a protocol, such as MQTT, OPC UA, Modbus, and ThingWorx. A service can implement data transformations, such as converting binary data into JSON. Additional services can be added through plugins.

shared memory

Shared memory allows applications running on the same computer to communicate with each other using a shared name, such as FAIRCOMS, to identify the shared memory. Each computer operating system defines proprietary APIs for this purpose.

SMALLINT

SMALLINT is a FairCom database field type containing a signed integer number, such as -32768. It is stored in a record as a signed 16-bit integer number with a range from -32,768 to 32,767.

SparkPlugB

Sparkplug B is a specification for MQTT that defines how data is sent and received.  Devices and sensors at the edge of a network can use Sparkplug B to communicate with applications like historians and analytics programs.  All of this communication goes through an MQTT broker.

SQL

Structured Query Language (SQL) is a standardized programming language that is used to manage relational databases and perform various operations on the data in them.

FairCom's SQL engine is ANSI compliant and has almost all SQL features up through the SQL:2003 standard.

SQL schema

A SQL schema is an owner namespace in a database. A SQL server automatically assigns each user their own schema in each database, which is named after the user's username. A schema automatically contains all database objects created by its user. Thus, a schema is a container for all objects owned by a user. A schema identifies the creator and owner of its objects, which is important because object owners have full control over their objects. A schema is also a namespace for its objects, which allows different users to use the same name for the objects they create.

In FairCom's JSON DB API, the "ownerName" property is used to specify the SQL schema.

SQL schema is not to be confused with JSON schema.

table

A database table defines a specific type of record, such as a person's data. A table contains zero or more records. A record contains two or more fields.

In the JSON DB API, a table must always have an "id" field to uniquely identify each record. A table is similar to a collection in a NoSQL database.

A FairCom table may have up to 2500 fields and zero or more of those fields may have a JSON type.  Each field (or group of fields) may be indexed by one or more indexes with a maximum of 500 indexed fields. One or more individual properties inside a JSON field may also be indexed.

TCP

Transmission Control Protocol (TCP) is a standard networking protocol that allows computers to communication, see RFC 793.

TCP/IP

Transmission Control Protocol/Internet Protocol (TCP/IP) is the combination of a networking protocol (TCP) and computer addressing (IP) that makes it possible for computers to communicate across the Internet.

Internet protocols: hostname, HTTP, HTTPS, IP, IP Address, MQTT, MQTTS, MQTTWSS, protocol, TCP, TCP/IP, TLS, WebSocket

ThingWorx

The PTC ThingWorx platform is a complete, end-to-end technology platform designed for the industrial Internet of Things (IIoT). It delivers tools and technologies that empower businesses to rapidly develop and deploy powerful applications and augmented reality (AR) experiences.

TIME

TIME is a FairCom database field type containing a time value, such as "15:35:02:00". It is stored in a record as a 32-bit unsigned integer that represents a specific millisecond in a day. A time has four parts: hour, minute, second, and millisecond which represent the number of milliseconds after midnight. It does not include a date or a timezone offset.

TIMESTAMP

TIMESTAMP is a FairCom database field type. It is stored in a record as a 64-bit number that represents a specific DATE and TIME. It does not include a timezone offset.

TINYINT

TINYINT is a FairCom database field type containing a signed integer number, such as -128. It is stored in a record as a signed 8-bit integer number with a range from -128 to 127.

TLS

Transport Layer Security (TLS) is a secure way for computers to communicate. It uses encryption, a certificate file , and a private key file to create secure communications between computers. TLS was formerly called Secure Sockets Layer (SSL). FairCom products support TLS 1.3, which is the latest version.

TLS handshake

TLS handshake is a series of requests by a client computer and the corresponding responses by a server computer.

transform

A data transformation converts one form of data into another. The primary forms of data transformations include enriching transforms, reformatting transforms, and reshaping transforms. A transform may combine any or all types of transformations.

A transform in FairCom Edge is a process that transforms data in an integration table. Each integration table has one configurable transform process that runs each time a record is inserted into that table. The transform process may contain zero or more transform steps. Each step runs a transform method supplied by a transform service. Each step can use the output of another step as its input.

By chaining together transform services FairCom Edge can convert the initial data into one or more output formats, shapes, enrichments, and generated results. So when a record is inserted into an integration table, the table's transform process can take the contents of the "source_payload" field and update user-defined fields with a wide variety of transformed results, such as JSON documents, XML documents, binary data formats, modified or generated images, metadata, results of machine learning, and so forth. Output services can use any of these fields as their source of data making it easy for data to come into FairCom Edge in one format and go out to many different services in different formats.

FairCom Edge ships with several transform plugins that provide a variety of transform services, such as converting Siemens' native binary PLC data into JSON, converting JSON into tables, converting tables into JSON, transforming the structure of JSON documents, transforming the values of JSON properties, and more.

type

A type is the data type of a field in a table. In a FairCom server, data is stored in fields, records, tables, and databases. A record contains one or more fields. A table contains zero or more records. Each field has a predefined field type.

A FairCom server provides strongly typed fields and flexibly typed fields, which can be freely mixed into any table. Strongly typed fields make queries predictable and fast.

The most common strongly typed fields are NUMERIC, INTEGER, VARCHAR, LVARBINARY, BIT, DATE, TIME, and TIMESTAMP. The remaining strongly typed fields have specialty purposes.

A FairCom server also supports JSON fields, which may flexibly contain any JSON type.

A FairCom table may have up to 2500 fields and zero or more of those fields may have a JSON type.  Each field (or group of fields) may be indexed by one or more indexes with a maximum of 500 indexed fields. One or more individual properties inside a JSON field may also be indexed.

UDT

User Defined Type (UDT) is a user-defined data structure in a programming language, such as C, C++, Java, etc.

FairCom Edge provides an advanced transform that can take native binary user-defined types in a Siemens PLC and convert them into JSON.

URL

Uniform Resource Locator (URL) is a standard way for uniquely addressing resources on a network. A URL is an Internet standard that uses the following pattern: protocol://domainName:portNumber/resource.

Common FairCom URLs include https://docs.faircom.com/docs/ and https://localhost:8443/.

UTC

Coordinated Universal Time (UTC) is the primary time standard by which the world regulates clocks and time. It is within about 1 second of mean solar time at 0° longitude. It is a successor to Greenwich Mean Time (GMT) or ZULU time. It has a timezone offset of 0, and it is not adjusted for daylight saving time.

VARBINARY

VARBINARY is a FairCom database field type containing a variable-length binary value. It is stored in a record as a variable-length sequence of bytes with a user-defined maximum length up to 65,500 bytes.

VARCHAR

VARCHAR is a FairCom database field type containing a variable-length string, such as "my string". It is stored in a record as a variable-length sequence of UTF-8 characters with user-specified maximum length up to 65,500 bytes.

WebSocket

WebSocket (WS) is a standard communication protocol for bidirectional exchange of data between computers, see RFC 6455. It works over TCP/IP and HTTP. It is often used by single page web applications because web browsers have built in support for WebSocket. It is also used by applications and servers that want to push messages to other computers in additional to using the request-response provided by HTTP.

WS

WebSocket (WS) is a standard communication protocol for bidirectional exchange of data between computers, see RFC 6455. It works over TCP/IP and HTTP. It is often used by single page web applications because web browsers have built in support for WebSocket. It is also used by applications and servers that want to push messages to other computers in additional to using the request-response provided by HTTP.

WSS

WebSocket Secure (WSS)is the secure version of WebSocket. It uses TLS to create secure communications.