.. _sos-schema: ========== sos-schema ========== ----------------- Manage SOS Schema ----------------- :Date: 20 July 2023 :Version: v6 :Manual section: 8 :Manual group: SOS SYNOPSIS ======== sos-schema [OPTION...] DESCRIPTION =========== The **sos-schema** command is used to manage SOS schema. Schema define the format of objects in a container. This format includes the attributes in the object that will be indexed. A schema is defined outside the container as a text file called a **template**. The **template** file is JSON dictionary, for example: :: { "name": schema-name-string, "uuid": uuid-string "attrs": [ { "name": attribute-name, "type": attribute-type, }, . . . { "name": join-attr-name, "type": "JOIN", "index": {}, "join_attrs": [ attr-name, attr-name, . . . ] } ] } In the template above, the last attribute is called a *JOIN*. A *JOIN* attribute occupies no space in the object, but allows a collection of attributes to be used as a key in an index. The *UUID* is a Universally Unique ID computed using **libuuid**. The attribute names, types, and indices are used to compute this value. A template may also contain multiple schema definitions. :: { "schemas" : [ { schema-dictionary }, { schema-dictionary }, . . . ] } OPTIONS ======= --path PATH Specifies the **PATH** to the container. \-\-query Query the schema defined in the container. Use with the **\-\-verbose** option to provide detail information for each schema. --add PATH Adds a single schema defined in the *template file PATH* to the container. --export PATH Export all schema defined in the container to a multi-schema *template* file at **PATH**. --import PATH Add all schema defined in multi-schema *template* file at **PATH** to the container. \-\-verbose When querying schema provide detail information of the schema contents. Absent this option, only the schema name are printed. --schema NAME Used with the **\-\-query** option to print information only for the schema *NAME*. --uuid UUID Used with the **\-\-query** option to print information only for the schema with the Universally Unique ID *UUID*. EXAMPLES ======== Query Schema ------------ :: $ sos-schema --path database --query 12354914-a519-48ea-a410-d2e86ca5dc4b 0 vmstat d2641326-77a2-48cf-99d3-83a37dbdf65e 0 meminfo 3ac614f6-ec43-4498-8bc6-b5c58a7e1f0d 0 lustre_client In this example, the first column is the *UUID*, the second is the schema *generation* number, and the third is the schema name. The *generation* number is incremented whenever indices are added to or removed from the schema. See the **sos-index** command for information on how indices can be added and removed. Query Verbose ------------- :: $ sos-schema --path database --query --verbose --schema meminfo d2641326-77a2-48cf-99d3-83a37dbdf65e 0 meminfo Id Type Indexed Name ---- ------------------------ ------------ -------------------------------- 0 TIMESTAMP timestamp 1 UINT64 component_id 2 UINT64 job_id 3 UINT64 app_id 4 UINT64 MemTotal 5 UINT64 MemFree . . . 51 JOIN time_job_comp [timestamp+job_id+component_id] 52 JOIN time_comp_job [timestamp+component_id+job_id] 53 JOIN job_comp_time [job_id+component_id+timestamp] 54 JOIN job_time_comp [job_id+timestamp+component_id] 55 JOIN comp_time_job [component_id+timestamp+job_id] 56 JOIN comp_job_time [component_id+job_id+timestamp] Query Verbose ------------- Query the details for a single schema. :: $ sos-schema --path database --query --verbose --schema meminfo d2641326-77a2-48cf-99d3-83a37dbdf65e 0 meminfo Id Type Indexed Name ---- ------------------------ ------------ -------------------------------- 0 TIMESTAMP timestamp 1 UINT64 component_id 2 UINT64 job_id 3 UINT64 app_id 4 UINT64 MemTotal 5 UINT64 MemFree . . . 51 JOIN time_job_comp [timestamp+job_id+component_id] 52 JOIN time_comp_job [timestamp+component_id+job_id] 53 JOIN job_comp_time [job_id+component_id+timestamp] 54 JOIN job_time_comp [job_id+timestamp+component_id] 55 JOIN comp_time_job [component_id+timestamp+job_id] 56 JOIN comp_job_time [component_id+job_id+timestamp] Add a Single Schema ------------------- Add a single schema to the container. :: $ sos-schema --path database --add schema-template.json Export All Schema in a Container -------------------------------- Export all schema in a container to a JSON template file. This is useful for adding schema defined in one container to another. :: $ sos-schema --path database --export multi-schema-template.json Import Schema ------------- Import all schema defined in a JSON template file to a container. :: $ sos-schema --path database --import multi-schema-template.json ENVIRONMENT =========== ODS_LOG_MASK ------------ This environment variable specifies what log messages are printed by the SOS libraries. The value is a bit mask as follows: ------------------------ Value \| Description ------------------------ 0 \| No messages are logged 1 \| **Fatal** errors (i.e. the process will exit) 2 \| **Errors** 4 \| **Warnings** 8 \| **Informational** messages 16 \| **Debug** messages 255 \| **All** messages are logged SEE ALSO ======== :ref:`sos-index(8) `, :ref:`sos-part(8) `, :ref:`sos-monitor(8) `, :ref:`sos-import-csv(8) `