Skip to main content

A FireCloud database extension

Project description

Hound

A FireCloud database extension

Purpose

This repository contains the source code for the Hound database extension system. This system aims to provide a low-latency system for logging changes to a FireCloud workspace.

This allows for attribute provenance to be reconstructed by querying the database history, and for external tools to log changes as well.

Usage

  1. Users with hound-enabled software automatically generate logs as they continue to do their work
  2. Hound can recreate attribute value histories from logs to produce provenance

Format

Hound logs data in a bucket folder. Entries are organized based on the list below. snowflake refers to an auto-generated ID from Hound's snowflake implementation. Snowflakes are almost guaranteed to be unique (see below)

  • hound/: Root folder for hound data in bucket
    • (samples|pairs|participants|sets)/: Folder for entity-metadata change logs
      • (entity-id)/: Folder for entity data
        • (attribute)/: Folder for attribute data on each entity
          • (snowflake): Serial numbered files containing update objects
    • workspace/: Folder for workspace-level metadata
      • (attribute)/: Folder for attribute data on the workspace
        • (snowflake): Serial numbered files containing update objects
    • logs/: Folder for event-logs
      • (job|upload|meta|other)/: Folder for specific event entries
        • (snowflake): Files containing log entries

Snowflake spec

Encode 22-byte snowflake into 44 byte (hex encoded) object name

  • 64-bit (8 byte) unix timestamp (8 byte floating-point number)
  • 64-bit (8 byte) machine id (based on nodename) Only 6 bytes used
  • 16-bit (2 byte) random client id (generated during init of Snowflake object)
  • 16-bit (2 byte) sequence identifier (starts at 0 per client, increments from there)
  • 8-bit (1 byte) Zero field (reserved)
  • 8-bit (1 byte) checksum field (sum of remaining fields)

Uniqueness

Snowflakes are structured to almost guarantee uniqueness. If two clients from the same machine (or from machines with identical MAC addresses) create a snowflake at exactly the same time (within their system clocks' precisions) AND the clients have generated the same number of snowflakes so far (clients have the same sequence id), there is a 1/65536 chance that the snowflakes will collide (based on client id).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hound-0.1.9.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

hound-0.1.9-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file hound-0.1.9.tar.gz.

File metadata

  • Download URL: hound-0.1.9.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for hound-0.1.9.tar.gz
Algorithm Hash digest
SHA256 db2cd81018bcce68b2874fc8042c6ba22b3312e8e3787e33b341c68602cdeb83
MD5 eed31b937b63988b7cceb2afecdbed2b
BLAKE2b-256 3e61f7b9644162c1ec880d11905cd75b3e71dd5f2d73fdeb968ffb0e5d1da337

See more details on using hashes here.

File details

Details for the file hound-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: hound-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for hound-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 f0eaf7c3e53325a0cc19aeb89d0c89b739594bf90bf66099304053f46cb0d79c
MD5 2f860639288e331c4a09fa41e72fdd8f
BLAKE2b-256 0991834ed12bbc1e484dc079682b187151e2f2b0312c879a49d67a01635fae89

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page