Skip to content

aicers/giganto

Repository files navigation

Giganto: Raw-Event Storage System for AICE

Giganto is a high-performance raw-event storage system, specifically designed for AICE. It is optimized to receive and store raw events through QUIC channels and provides a flexible GraphQL API for querying the stored events. Giganto empowers AICE with the ability to efficiently handle large-scale data processing and real-time analytics.

Coverage Status

Features

  • Scalable Storage: Giganto provides a scalable and distributed storage system, optimized for handling raw events generated by AICE sensors.
  • GraphQL API: Giganto offers a powerful and flexible GraphQL API, enabling developers to query stored events with ease.
  • QUIC Channels: Giganto utilizes the QUIC protocol to enable fast, low-latency communication and data transfer.
  • High Performance: Giganto is designed to efficiently handle high volumes of data, ensuring optimal performance for AICE.

Usage

You can run Giganto by invoking the following command:

giganto --cert <CERT_PATH> --key <KEY_PATH> --ca-certs <CA_CERT_PATH> \
--ca-certs <CA_CERT_PATH>

If you want to run Giganto with local configuration file,

giganto -c <CONFIG_PATH> --cert <CERT_PATH> --key <KEY_PATH> --ca-certs \
<CA_CERT_PATH> --ca-certs <CA_CERT_PATH>

Arguments

  • <CONFIG_PATH>: Path to the TOML configuration file (optional when running in remote mode).
  • <CERT_PATH>: Path to the certificate file (required).
  • <KEY_PATH>: Path to the private key file (required).
  • <CA_CERTS_PATH>: Path to the CA certificates file (required).

Example

  • Run Giganto with remote server configuration.
giganto --cert /path/to/cert.pem --key /path/to/key.pem \
--ca-certs /path/to/ca_cert.pem
  • Run Giganto with local configuration file and multiple CA certificates.
giganto -c path/to/config.toml --cert /path/to/cert.pem --key /path/to/key.pem \
--ca-certs /path/to/ca_cert1.pem --ca-certs /path/to/ca_cert2.pem

Configuration

In the config file, you can specify the following options:

Field Description Required Default
ingest_srv_addr Address to listen for ingest QUIC No [::]:38370
publish_srv_addr Address to listen for publish QUIC No [::]:38371
graphql_srv_addr Giganto's GraphQL address No [::]:8442
data_dir Path to directory to store data Yes -
retention Retention period for data No 100d
log_dir Path to Giganto's syslog file No -
export_dir Path to Giganto's export file Yes -
max_open_files Max open files for database No 8000
max_mb_of_level_base Max MB for RocksDB Level 1 No 512
num_of_thread Number of background threads for DB No 8
max_sub_compactions Number of sub-compactions allowed No 2
ack_transmission Ack count for ingestion data No 1024
addr_to_peers Address to listen for peer QUIC No 254.254.254.254:38383
peers List of peer addresses and hostnames No -

The following is an example of how to configure the config file:

ingest_srv_addr = "0.0.0.0:38370"
publish_srv_addr = "0.0.0.0:38371"
graphql_srv_addr = "127.0.0.1:8442"
data_dir = "tests/data"
retention = "100d"
log_dir = "/opt/clumit/log"
export_dir = "/opt/clumit/var/giganto/export"
max_open_files = 8000
max_mb_of_level_base = 512
num_of_thread = 8
max_sub_compactions = 2
ack_transmission = 1024
addr_to_peers = "10.10.11.1:38383"
peers = [ { addr = "10.10.12.1:38383", hostname = "ai" } ]

For the max_mb_of_level_base, the last level has 100,000 times capacity, and it is about 90% of total capacity. Therefore, about db_total_mb / 111111 is appropriate. For example, 90MB or less for 10TB Database, 900MB or less for 100TB would be appropriate.

These values assume you've used all the way up to level 6, so the actual values may change if you want to grow your data further at the level base. So if it's less than 512MB, it's recommended to set default value of 512MB.

If there is no addr_to_peers option in the configuration file, it runs in standalone mode, and if there is, it runs in cluster mode for P2P.

If there is no log_dir option in the configuration file, logs will be written to stdout instead of to a specific path's log file.

Test

Run Giganto with the prepared configuration file. (Settings to use the certificate/key from the tests folder.)

cargo run -- -c tests/config.toml --cert tests/certs/node1/cert.pem \
--key tests/certs/node1/key.pem --ca-certs tests/certs/ca_cert.pem

License

Copyright 2022-2025 ClumL Inc.

Licensed under Apache License, Version 2.0 (the "License"); you may not use this crate except in compliance with the License.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See LICENSE for the specific language governing permissions and limitations under the License.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.