Database

January 22, 2026 · View on GitHub

This document describes the xyOps database schema. It lists every index (table), all indexed columns, and the dedicated sorters used for ordering results.

Overview

xyOps uses Unbase which sits on top of pixl-server-storage and its Indexer subsystem. Records are stored as JSON in a key/value backend (SQLite by default), and Unbase builds searchable indexes and sorters from configured field definitions. Queries support both simple "field:words" and a structured PxQL syntax.

Notes:

  • Type refers to the indexer type: word (default full-text/word), number, or date. Unless specified, a field is a word index.
  • Date/number fields may be stored with reduced precision for performance (e.g., divided by 3600 to index hour-level time buckets).

Jobs

Completed job records (see Job).

Indexed Columns:

Column IDSourceTypeDescription
codeJob.codeWordResult code for the job (0 success, non-zero failure; special values like warning, critical, abort).
dateJob.completedNumberCompletion timestamp indexed at hour precision.
sourceJob.sourceWordLaunch source (scheduler, plugin, key, user, action, alert, workflow).
tagsJob.tagsWordTags assigned to the job.
eventJob.eventWordEvent ID that spawned the job.
categoryJob.categoryWordEvent category ID copied into the job.
pluginEvent.pluginWordPlugin ID that executed the job.
serverJob.serverWordServer ID selected to run the job.
groupsJob.groupsWordServer group IDs copied into the job.
workflowJob.workflowWordWhen part of a workflow, the workflow event ID.
ticketsJobWordLinked ticket IDs associated with the job.

Sorters:

Sorter IDSourceTypeDescription
completedJob.completedNumberSort by job completion timestamp.
elapsedJob.elapsedNumberSort by job elapsed duration (seconds).

Alerts

Alert invocation records (see AlertInvocation).

Indexed Columns:

Column IDSourceTypeDescription
activeAlertInvocation.activeWordWhether the alert is currently active (true or false).
alertAlertInvocation.alertWordAlert definition ID.
groupsAlertInvocation.groupsWordGroups the server belongs to.
serverAlertInvocation.serverWordServer ID associated with the invocation.
startAlertInvocation.dateNumberStart timestamp indexed at hour precision.
endAlertInvocation.modifiedNumberLast modified time indexed at hour precision.
jobsAlertInvocation.jobsWordRelated job IDs.
ticketsAlertInvocation.ticketsWordRelated ticket IDs.

Snapshots

Server and group snapshot records (see Snapshot).

Indexed Columns:

Column IDSourceTypeDescription
typeSnapshot.typeWordSnapshot type: server or group.
sourceSnapshot.sourceWordSnapshot origin: alert, watch, user, or job.
serverSnapshot.serverWordServer ID for server snapshots.
groupsSnapshot.groupsWordGroups associated at the time of the snapshot.
dateSnapshot.dateNumberSnapshot timestamp indexed at hour precision.
alertsSnapshot.alertsWordActive alert invocation IDs at snapshot time.
jobsSnapshot.jobsWordActive job IDs at snapshot time.

Servers

Server records (see Server).

Indexed Columns:

Column IDSourceTypeDescription
groupsServer.groupsWordGroup IDs (master list enabled).
createdServer.createdNumberCreated timestamp indexed at hour precision.
modifiedServer.modifiedNumberLast modified timestamp indexed at hour precision.
keywordsServer.keywordsWordSearch keywords (min 1, max 64 chars per word).
os_platformServer.info.os.platformWordOS platform (filtered alphanumeric; master list/labels).
os_distroServer.info.os.distroWordOS distribution (filtered alphanumeric; master list/labels).
os_releaseServer.info.os.releaseWordOS release/version (filtered alphanumeric; master list/labels).
os_archServer.info.os.archWordCPU architecture (filtered alphanumeric; master list/labels).
cpu_virtServer.info.virt.vendorWordVirtualization vendor (filtered alphanumeric; master list/labels).
cpu_brandServer.info.cpu.comboWordCPU vendor/brand (filtered alphanumeric; master list/labels).
cpu_coresServer.info.cpu.coresWordCPU core count (filtered alphanumeric; master list/labels).

Activity

User/system activity log (see Activity).

Indexed Columns:

Column IDSourceTypeDescription
actionActivity.actionWordActivity action identifier.
keywordsActivity.keywordsWordKeywords for search (IDs, usernames, IPs).
dateActivity.epochNumberActivity timestamp indexed at hour precision.

Tickets

Ticket records (see Ticket).

Indexed Columns:

Column IDSourceTypeDescription
typeTicket.typeWordTicket type (issue, feature, change, maintenance, question, other).
numTicket.numNumberAuto-assigned ticket number.
statusTicket.statusWordTicket status (open, closed, draft).
categoryTicket.categoryWordCategory ID.
usernameTicket.usernameWordCreator username (filtered alphanumeric).
assigneesTicket.assigneesWordAssigned users (filtered alphanumeric array).
ccTicket.ccWordUsers CC’d (filtered alphanumeric array).
jobsTicketWordRelated job IDs.
tagsTicket.tagsWordTag IDs (master list enabled).
createdTicket.createdNumberCreated timestamp indexed at hour precision.
modifiedTicket.modifiedNumberLast modified timestamp indexed at hour precision.
dueTicket.dueDateDue date.
serverTicket.serverWordAssociated server ID.
subjectTicket.subjectWordShort summary (FTS; stemming enabled).
bodyTicket.bodyWordFull-text search across username, subject and body (markdown filtered; stemming enabled).
changesTicket.changesWordFull-text search across change log content (markdown filtered; stemming enabled).

Sorters:

Sorter IDSourceTypeDescription
numTicket.numNumberSort by ticket number.
modifiedTicket.modifiedNumberSort by last modified timestamp.

Column Properties

These are the common field properties supported by the indexer (see Indexer docs for full details):

  • id: The column ID used in searches (e.g., status:open).
  • source: Slash-delimited path to the source data field (can reference nested properties or multiple sources for FTS).
  • type: Index type for the field or sorter. Omit for word indexes; may be number or date for fields, and number or string for sorters.
  • divide: For numbers, divides the value before indexing. For dates, common value 3600 indexes at hour precision to improve performance.
  • min_word_length / max_word_length: Bounds for token length in word indexes.
  • use_remove_words: Toggle custom remove-word list.
  • use_stemmer: Enable Porter stemming for word indexes.
  • filter: Apply a filter prior to indexing (e.g., alphanum, alphanum_array, markdown).
  • master_list: Maintain a master list of unique indexed values for quick summaries.
  • master_labels: Maintain a master list of unique raw values (before filtering).