NIFNSF: Move View Indexes Out of the NSF

NIFNSF: Move View Indexes Out of the NSF

The last piece, DAOS, moved attachments out of the NSF. But an NSF usually bloats from a second thing too: view indexes. Every view maintains an index, and that index sits inside the .nsf, swelling the file and slowing backups.

NIFNSF (moving view indexes out of databases) handles the second one: it moves a database’s view indexes out of the .nsf into separate .ndx files. The NSF gets smaller and backup/restore gets faster (an .ndx can grow to 1 TB). And it has the exact same hard prerequisite DAOS does — transaction logging has to be on first (see Domino transaction logging).


TL;DR

  • What it does: moves a database’s view indexes out of the .nsf into separate .ndx files. HCL’s wording: it makes the database file smaller (so it’s less likely to hit the size limit) and speeds up backup and restore.
  • Prerequisite: like DAOS, enable transaction logging first (the official procedure’s first step is “Enable transactional logging in the Server document”); and the database must be at ODS 51 or higher (verbatim: “To use this feature, databases must be at ODS version 51 or higher”).
  • How to enable (12.0.2+): on the Server document’s NIFNSF tab — Store view indexes in NIFNSF, NIFNSF base path, Enable NIFNSF when creating new databases. The older notes.ini equivalents are NIFNSFEnable=1, NIFBasePath=<path>, CREATE_NIFNSF_DATABASES=1; the Server document fields take precedence. Restart afterward.
  • Per database: load compact -c -nifnsf on <db>.nsf (restart after) and load compact -c -nifnsf off <db>.nsf.
  • How to check: show dir -nifnsf (all databases, whether each uses it, and the .ndx size) and show dir -nifnsfonly (only those using it).
  • Back to the DBIID: enabling per database uses the copy-style -c — which reassigns the DBIID, so (as the transaction logging piece says) take a fresh full backup afterward.

What it does: view indexes → separate .ndx files

Every view has an index behind it, stored by default alongside the document data inside the .nsf. More views and more documents mean the index swells the NSF; backing the whole thing up is slower too.

NIFNSF moves that index out of the .nsf into a separate .ndx file (in the data directory by default; configurable). HCL’s two stated benefits are direct:

  • The NSF gets smaller — without the index, the file is less likely to hit the 64 GB database size limit.
  • Backup/restore gets faster — the .nsf you back up is smaller, and the index can be handled separately.

An .ndx can grow to 1 TB (in practice, a view large enough to hurt application responsiveness becomes the bottleneck well before that ceiling).

You’ll notice this is the same idea as DAOS: move the things that sit in the NSF but don’t have to be bound to the documents out of it. DAOS moves attachments; NIFNSF moves view indexes.

The prerequisites: transaction logging + ODS 51

Like DAOS, NIFNSF has two gates to clear first (official steps):

  • Enable transaction logging first: the first step of the official procedure is “Enable transactional logging in the Server document in the Domino directory.” The reason is the same as for DAOS — the relationship between the NSF and the external .ndx has to be protected by the transaction log so crash recovery lines them back up (transaction logging itself is in the transaction logging piece).
  • ODS 51 or higher: verbatim, “To use this feature, databases must be at ODS version 51 or higher.” How to read and raise the ODS is in the ODS-versions piece — too-old databases need an ODS upgrade before NIFNSF will work.

How to enable: the Server document tab (12.0.2+)

From 12.0.2, the settings moved to the Server document’s NIFNSF tab; if both notes.ini and the Server document have settings, the Server document fields take precedence. (Those three fields require the server itself to be 12.0.2 or later and the Domino Directory to use a V12.0.2+ pubnames.ntf design to appear; older setups still use notes.ini.) The three fields map to the old notes.ini settings:

Server document fieldOld notes.iniPurpose
Store view indexes in NIFNSFNIFNSFEnable=1Turns on “index outside the database” (NIFNSFEnable: 1 = outside, 0 = inside, default 0)
NIFNSF base pathNIFBasePath=<path>Where the .ndx files go (NIFBasePath, defaults to the data directory)
Enable NIFNSF when creating new databasesCREATE_NIFNSF_DATABASES=1Whether new databases get it (default: No)

Restart the server after changing these.

Per-database enable/disable and checking

Once it’s on at the server level (or when you don’t want the whole server at once), you can work per database:

  • Enable: load compact -c -nifnsf on <db>.nsf, then restart.
  • Disable: load compact -c -nifnsf off <db>.nsf.
  • Check: show dir -nifnsf lists all databases, whether each uses NIFNSF, and the .ndx size; show dir -nifnsfonly lists only those using it.

Back to the DBIID: why enabling uses -c

Note that enabling NIFNSF per database uses the copy-style compact -c. As the transaction logging piece explains, copy-style (-c) rewrites the database and reassigns the DBIID, which invalidates the old log — so after enabling NIFNSF, take a fresh full backup to rebase on the new DBIID. It’s the same rule as DAOS using compact -c -daos on to move existing attachments and DBMT’s -ods: anything copy-style means a fresh backup afterward.

Wrap-up

  • What it is: moves a database’s view indexes out of the .nsf into separate .ndx files; smaller NSF, faster backup/restore (.ndx up to 1 TB).
  • Prerequisites: transaction logging on first (the official first step) + ODS 51 or higher.
  • How to enable (12.0.2+): the Server document NIFNSF tab (mapping to NIFNSFEnable/NIFBasePath/CREATE_NIFNSF_DATABASES), Server document wins, restart afterward.
  • Per database: load compact -c -nifnsf on/off; check with show dir -nifnsf / -nifnsfonly.
  • DBIID: enabling per database uses copy-style -c, which reassigns the DBIID → take a fresh full backup afterward — same rule as DAOS moving attachments and DBMT’s -ods.
  • The DAOS parallel: DAOS moves attachments, NIFNSF moves view indexes — both move what the NSF can’t hold out of it, and both need transaction logging first.

Sources

← Back to all posts