Skip to main content

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).

Metadata

Release files for hound 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hound 1.0.1
File Size Uploaded Provenance
hound-1.0.1.tar.gz 9.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for hound 1.0.1
File Interpreter ABI Platform
hound-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.9 kB

Release files / hound-1.0.1.tar.gz

Download URL hound-1.0.1.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d19ca594d67f96222089c9fa8bc85f9fc808498dcb92eab940600a17a72d7ea2
BLAKE2b-256 checksum
How to use checksums
106491e9e14bc880184ae6d37cf43bbc01a6210cb916949c28b9e633130f1df4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.7

Release files / hound-1.0.1-py3-none-any.whl

Download URL hound-1.0.1-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08c41a123f89c890fe9a41aabacc3f5dd4aa52c2bf7dded9cca119abdb9d6181
BLAKE2b-256 checksum
How to use checksums
871bc278fb1f690bf239939c1c746b4075947d05828aae5435431438f706176d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.7

Security for hound 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page