Skip to main content

So you might have read my other posts regarding Dynamic (Type-30) files in UniVerse.

Until recently I have not had much to do with dynamic files.

Now that I am looking at them in detail I am looking for resources that will help me get a handle on how to size them correctly and build them to suite the intended data load.

Are there any in-depth resources on Dynamic files available?

Thanks

Gregor Scott



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

So you might have read my other posts regarding Dynamic (Type-30) files in UniVerse.

Until recently I have not had much to do with dynamic files.

Now that I am looking at them in detail I am looking for resources that will help me get a handle on how to size them correctly and build them to suite the intended data load.

Are there any in-depth resources on Dynamic files available?

Thanks

Gregor Scott



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

After digging around the interweb and local documentation repositories I have not uncovered any hidden trove of information about Dynamic Files in UniVerse.

I have been able to pull together the following understandings from testing and feedback, and I hope it helps others to quicken their journey to Dynamic File competence.

These are based on UniVerse 11.3.5 - test and assess on your own platform to be sure they still apply.

CREATE.FILE syntax behaviours for Dynamic Files

  • The SEQ.NUM parameter does not work on CREATE.FILE commands
  • The LARGE.RECORD parameter does not work on CREATE.FILE commands
  • The RECORD.SIZE parameter on a CREATE.FILE command will only ever result in a maximum GROUP.SIZE setting calculation of 2.
    The GROUP.SIZE parameter needs to be used instead to get larger GROUP.SIZE settings
  • Setting GROUP.SIZE > 2 on a CREATE.FILE command does not re-calculate the LARGE.RECORD value in the resulting file.
     The LARGE.RECORD value still uses the default of 80% of a single group
  • It is possible to mix-n-match Pick-style DICT specification and UniVerse-style DATA specifications, allowing the DICT to be created with custom type and separation.

ICREATE.FILE syntax behaviours for Dynamic Files

  • The ICREATE.FILE command does not create a DATA file for a DICT file created using CREATE.FILE - they do not play nicely together.
  • It is possible to use ICREATE.FILE to create a DICT file and a DATA file separately, allowing custom DICT specifications to be used
  • The RECORD.SIZE parameter on ICREATE.FILE commands - when using large values - does not correctly calculate the GROUP.SIZE and LARGE.RECORD settings.
     The resulting GROUP.SIZE is capped at 2, and the LARGE.RECORD value reflects that group size.
    A support case has been raised about this (Case# 00929016).

General Information about Dynamic Files

  • The modulo setting appears to support Non-Prime numbers - in contrast to Hashed files
  • OS-level read-ahead mechanisms allow larger GROUP.SIZE settings to be viable.
     It can be helpful to align group sizes to OS level block sizes; RHEL standard is 4k, so ensure GROUP.SIZE is an even number to align the group size to the OS read blocks
  • Each group has a header block, reducing the available space for data.
     The header is 12 bytes for 32bit files and 24 bytes for 64bit files
  • Total group space is the GROUP.SIZE * 2048. The header space needs to be removed from the group space calculation to identify the space available for data
  • The value returned from fileinfo(fv.FILE, FINFO$GROUPSIZE) is the quantity of 1K blocks per group.
    This is in direct contrast to all TCL tools which work in 2K blocks!
  • The ANALYZE.FILE output truncates the "Per Record" values to 6 digits so they are not accurate.
    A support case was raised about this (Case# 00929012), which was closed to "In Development" because it was linked to [UNV-27473 FILE.STAT unable to handle large files with more than 10 million groups]



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------