Getting System Information

N1QL has a system catalog that stores metadata about a database. The system catalog is a namespace called system.

There is a keyspace for each type of artifact. The keyspace names are plural in order to avoid conflicting with N1QL keywords.

Logical Hierarchy

N1QL has the following artifacts:

  • Datastores

    Datastores are similar to sites. A datastore is a database deployment, for example, a server cluster, cloud service, or mobile installation. It is analogous to a relation database instance.

  • Namespaces

    Namespaces are similar to pools. A namespace is a unit of authorization, resource allocation, and tenancy. It is analogous to a relational database or schema.

  • Keyspaces

    Keyspaces map to buckets in Couchbase Server. A keyspace is a set of documents that may vary in structure. It is a unit of authorization and resource allocation. It is analogous to a relational database table.

  • Indexes

    An index on a keyspace. It is analogous to a relational database index. Types of indexes include b-tree (ForestDB or MOI) and view indexes.

  • Dual

    The dual keyspace has been added for evaluating constant expressions. It contains a single entry with no attributes.

Querying Datastores

You can query datastores using the SELECT statement as follows:

SELECT * FROM system:datastores

The query returns the following attributes:

  • id: string (id for the datastore)

  • url: string (URL for the datastore instance)

Querying Namespaces

You can query namespaces using the SELECT statement as follows:

SELECT * FROM system:namespaces

The query returns the following attributes:

  • id: string (id for the namespace)

  • name: string (name for the namespace)

  • store_id: string (id for the datastore to which the namespace belongs)

Querying Keyspaces

You can query keyspaces using the SELECT statement as follows:

SELECT * FROM system:keyspaces

The query returns the following attributes:

  • id: string (id for the keyspace)

  • name: string (name for the keyspace)

  • namespace_id: string (id for the namespace to which the keyspace belongs)

  • store_id: string (id for the datastore to which the keyspace belongs)

Querying Indexes

You can query indexes using the SELECT statement as follows:

SELECT * FROM system:indexes

The query returns the following attributes:

  • id: string (id for the index)

  • name: string (name for the index)

  • index_key: array of strings (list of index keys)

  • index_type: string (type of index, for example, view index)

  • keyspace_id: string (id for the keyspace to which the index belongs)

  • namespace_id: string (id for the namespace to which the index belongs)

  • store_id: string (id for the datastore to which the index belongs)

Querying Dual

You can use dual to evaluate constant expressions.

SELECT 2+5 FROM system:dual

The query returns the result of the expression, 7 in this case.