Customer Portal

Multi-Value Fields and Buffers

Comments 1

  • Avatar
    dpavlis
    0
    Comment actions Permalink
    The MAX_RECORD_SIZE constant is used at various places by CloverETL engine during transformation execution. It may be set to much higher values than 64k, you just need to be aware of the fact that memory consumption will go higher. Each edge (in typical case) allocates 4x the MAX_RECORD_SIZE buffer for data processing. Most of the components allocate extra 1x MAX_RECORD_SIZE buffer/memory for their internal purpose.
    Thus simple graph with 3 components and 2 edges may end up allocating 1+1+1+4+4 (11) times MAX_RECORS_SIZE of memory. Which is not a problem on most today's systems. Only if you start running transformations with 50+ components, it may actually play a role.

    One option is to use BYTE or CBYTE (compressed byte) type field instead of STRING. They are also capable of storing strings and tend to occupy much less memory therefore lower MAX_RECORD_SIZE could be used to accommodate your long string values. When converting string to bytes, the DEFAULT_CHARSET_ENCODER is used - typically set to ISO-8859-1. You may need to set it to UTF-8 if your string contains chars outside of the default codepage.

Please sign in to leave a comment.