Type System One design goal of VAST is being
expressive enough to capture the semantics of the domain. This led us to develop
a rich type system for structured security data, inspired by the
Zeek network security monitor.
Terminology The diagram below illustrates the type system at a glance:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2dXVPiTFx1MDAxNsfvn08x5d4ubr+/zJ2CooCIgKDsbllcdTAwMDFcdTAwMDJEYohcdTAwMTBQ2Jrvvlxyjlx1MDAxMkNcdTAwMDKJXHUwMDEwiLM7UzU1hmC6k/M/vz6nu0/+89ePXHUwMDFmR87U1o9+/jjSX1uaabSH2svR3+fHJ/pwZFxmLPVcdTAwMTFa/DxcdTAwMWGMh63FmT3HsUc///FcdTAwMGbNto+X3zpuXHKe3r6pm/qTbjkjde4/1c8/fvxn8a/rWkO95WhW19RcdTAwMTdfWHy0vJyQ0nu0OLBcdTAwMTaXhphKwClcdTAwMTXLM4xRRl3P0dvq445mjvTlJ/NDRyXyPLPKtTMwfmSXI300lvnX8vKyXHUwMDFkwzQrztR865jW6o2HrkaNnOGgr9eNttObX91z/ON7o4G6XHUwMDA1y29cclx1MDAwN+Nuz9JHo0/fXHUwMDE52FrLcKbzY1x1MDAwMHxcdTAwMWN9u1x1MDAwYj9/LI+8zu+4WP489fz8du30wFx1MDAxY1xm59f+XHUwMDFiWPxZXr2ptfpd1Vx1MDAwNKu9PKelt0lbW57z8t4jtPy9Pd3o9lx1MDAxY3VcdTAwMTCT5bX0xX2FUEiBXHUwMDEwxcvbPr+CfdlePON/u3tutX/33Fx1MDAxYZvmslHzXHUwMDBmzrx24baNT/bh6K/OR2tdXHUwMDBms3idOtWHeVxunIFWujObzqt1d3n0cd6v3/9bNmhst7U324CMc0ZcdTAwMDUlTIhlXHUwMDA3TcPqe9tqXHUwMDBlWv2lOS2O/vq7v1x1MDAxZH9qp8uEJeVBJsyw5Ey1gYa2YP9O+1uwx1x1MDAxMlx1MDAwZmW/XHUwMDE40mPqsWC6jVx1MDAwNTtDzVx1MDAxYdnaUJnPqlx1MDAxNVx1MDAxM7lqxGjViFx1MDAxOYJAcvej2WzES+t8f+bo95Ffwba9zvxcdTAwMThcdTAwMTFcdTAwMWNEML/lY1x1MDAxZVhOxZgtmlx1MDAwMD5cdTAwMWQ9155cZnN+j/HH4YVdzm+b8aS77+tIV1f0/Ir5uSem0Z3b7VFL9UFcdTAwMWZ+MmnHUFx1MDAxZf7jhCej3Xa77ZZqgKZ+5/AyjLdcdTAwMWRcZo2uYWlm1d2+tVxuW09cbsFcdTAwMDJJwSRcdTAwMTFAPXBcdTAwMWNaZzYzQeMlg+FcdTAwMTCK+5OuRZje7343UmBcdTAwMDSOIVx1MDAwM1x1MDAxOFx1MDAxMI5cdTAwMThCXHUwMDEwb6O6bbmB1Fx1MDAwM8CQUYQjSC5cdTAwMGVuXHUwMDE0OD7nlb5mac/jylmnnS5cdTAwMTempWjcYFSypZ+JjVx1MDAxYsFcdTAwMDZNXHUwMDEwXHUwMDA2XHUwMDE4c1x1MDAxONqe/TudaG4giTzWTHdnzWtcdTAwMTlcItmqQfsxhFCkXHUwMDEwcmCGcCR5XHUwMDA0U9yOIe3xUHPm5rlPjmzwxV6OfLTx6yxhLuNaiTo4XHUwMDE2hDFcdTAwMTZee9ojqE6usnc1u8HJI852y42UmXSWUOZhXHSbs4RcdTAwMTJOVe9cdIKSbCO/aDCBXHUwMDA0rIhcdTAwMGZcdTAwMTCpglx1MDAxMFx1MDAwNmFcdTAwMDTxxUGT5lO2XphcdTAwMGW62ZebXv356qxu542nSDRhlEO89Dgx0UQ9s0CTRurBXHUwMDAygFD4QNq/14nGXHSV3jBktya9g6hEQlxuIYFkd5H1OrNjXHUwMDAwUlx1MDAxNMHstiOHbo2fdktccmdgXHUwMDA3XCJjg8v1XCJj0bgtcMGDcaEsS1x1MDAxMIwwXHUwMDBmra37U3JanLCrp9fxmaVlXHUwMDE130WjmnBteVx1MDAwM1x1MDAwZrlVgFx1MDAxZkhcdTAwMDfhXHUwMDE3aayyQVxiLDFgLMrALFx1MDAwZTaIdK1cdTAwMDHr95fPhVmllM21T0epaTtcdTAwMWFcdTAwMWJcdTAwMDRcdTAwMTEofja4XHUwMDFl14r9XHUwMDAyiKSEPDxcdTAwMWL8e51s+3WN+OffIGCrXHUwMDE063pcdTAwMTRcYp9cdTAwMDGOXFy1Ya5cdTAwMDaZgu6JXHUwMDA1Uc3Mj1x1MDAwNZB9OvrBguUjeWfBuaGb7Vx1MDAxZtBcdTAwMTdcdTAwMDeQfDp9Z0HEXHUwMDA2r+olwntcdTAwMTO3gUJw2pcjjohcdTAwMDDh075pVMpkp4/NWuHm5aozO4W59Fx1MDAwM0y4pjxMIPSgTCBq/MckdjXiMEy4fbruVahZeVx1MDAxY/DaWSdcdTAwMGLbZ+PBVVx1MDAwMpnAXVx1MDAwZthjvlJcboFcdTAwMDAn4Yc0/p1Otvm6ksVcdTAwMGLzZfEhgZJVXHUwMDEzXkVcdTAwMDJCQsD5xMVcdTAwMWZLhOJeibDBp/pcdTAwMTOhuJ5cYkFqXCKcXHUwMDA0qlx0XHUwMDAxITmMMItdPeMn9Fx1MDAxY9dmg0wmO1x1MDAxOU/uOlx1MDAxOfM52Wpiroe4UFx1MDAxM1x1MDAxMtuo6W9cdTAwMWTYQVx1MDAxZOSTPvJRXHUwMDEyWoFcdTAwMDGhXFyBgKHdxVx1MDAwN8lR0vHxcSRcdTAwMTWZesdZo6E1QfanLnjVMm/G18dOnIsguVx1MDAxMPVcdTAwMTnGhIeHT7Pbm2RcdTAwMWbO081UTmvb7atXPoK9pKdf3fjdQURcdTAwMTI4ekIunKzLtyr0qOGT+7ZcdTAwMWZm+FRDlVx1MDAwMlx1MDAxZPXZ6HEqek374fmicF+INnmHXHUwMDEwoMtOxzR8XHUwMDEyIHjdXHUwMDEywJzBSCbs3+tEe3zOiSfdXHUwMDFhZ1DN0apcdTAwMTX7zNhcdFxuOZaQ7Mfx8zlntnT84Vx1MDAxM6zKoVx1MDAwZYZtX99cdTAwMWZLinWDW/VcdTAwMDLhd/O+zoR1isJUhfNARphcdTAwMGZPZ7Pj/swuNMdWtXmd1nKZbjlcYlxuSVFcdTAwMTTyIME1abT/gJpcbjWuIVx1MDAxMFx1MDAxZno1h31FasVcdTAwMTlO5duwZFBdzzo2eYxcdTAwMThPq7Aqylx1MDAxNPrXgIBcdTAwMDPjacIhJ1x1MDAwMrLw6SD/TifberEnxUq81957ilVSiDmUe6JBVCvbLlxmOESKdYNP3X2KVaxZpiFcdTAwMDWjilxuXHUwMDExkJB/rFx1MDAxYbXnzH19cM9SJrwonZTMYcJF5UWCPCRcdTAwMTKUXHUwMDE3U36MXHUwMDAytrtcZtXXmDChXHUwMDBm9UG1OTm5xlr14YaWWlx1MDAwNIlEMiF43lxyQ1xikZAyfJDg3+tk2y/+nGSlID4ohEuyQjWmgUzyXHUwMDFk7m5IXHUwMDFhXHUwMDE09ptl3eBVd5plZTBwjFx1MDAwNVx1MDAwMeRcYmFcdTAwMTlhXHUwMDFlu0HrLfu8Ysu726ZulVK9u1x1MDAxM6olXFxP1JNmda1S3n+aXHUwMDE1XHUwMDEyiZlcdTAwMTRcXPyJWvouedYgrVBcdTAwMTK4ulx1MDAxY1x1MDAwMVxu+KfHtkkqV427KZ1xS6N2f2TnMn04O68kWypcdTAwMDLwY0zny8ipkJy6MoJvsfV281x1MDAxM812q9Nurlxux29hOfXqhnLA51x1MDAwYty/j2yCslSrsvnpL1x1MDAxYbFX0fzcJuZAwetoXHUwMDE5YEBcdTAwMDIowo/ZKq2hKJqZZrdeSXduzWL2rNRmXHRcdTAwMTfOjtNQXHUwMDAwaKRcdTAwMDNXpVx1MDAxMjLmUFE8plx1MDAxOEbahFx1MDAxMUfMoT9rXHUwMDFj5JDWLz808zeNk05egtckxlx1MDAxYyRwJlx1MDAxYVwiNURcIpHWgfv3Otn2SzyuPsZEXHUwMDE0XHUwMDBll4iiXHUwMDA0XHUwMDAyTPDuliYlZ5hUnZvjPuONXHJcdTAwMWXVi4JF+7ahQWBcdTAwMDaKQ4EgQiD8nlPDsa9cdTAwMGLnQ15s99E0Z9UrMj1pJFxcTDtOQG1cdFx1MDAwMynnk6vi4Fx0qKJehu2+mPVLKXRccm6rNrlcdTAwMTnVklxiXHUwMDAzuiaBKlx1MDAxNVx1MDAwZSAm4WHg3+tk269cdTAwMDdcdTAwMDZxJqDCwUBcdTAwMDJKXHUwMDAw/TPzT3uHwVx1MDAwNo9cdTAwMWFcdTAwMWRcdTAwMDbBmafAxd6UXHUwMDExxlx1MDAxOWbhOVC1s51i+aTbv1x1MDAxYs20eu6Ua+fTdMJ1lLDEXHUwMDEzXHUwMDAwXHUwMDFjMLGvpbL/TzxFSTzJYOYwXGZcdTAwMTD9VJVlk1bG5ZfHvnabf+71XHUwMDEwvZ1Onl6eaVCdjqRoZX3mSapPMZCYQiBcdTAwMDRz1UDYe1x1MDAxZVxuQaJcdTAwMDZTSNDvw6L/oUSUe+7XqyOKKFx1MDAxNlwiylx1MDAwZY2ne0jzjVx0yT9cdTAwMWE3l41R9sXIVFLfbZFsXFyV0ZBvUVx1MDAwMrDKXHUwMDFkdcdcdTAwMDVcdTAwMDHu6lx1MDAxMYeJP/K57kvqXG41c1bjSl7XyqmUeI22yWg/q2S5a/jttWEhsXI9XHUwMDFjhLdh/14nmlx1MDAwNVxcrNZGi3HrabjaaFx1MDAwMpFFIYJD1rVhjFNcdTAwMWXF/qLQYHXxrGmMXHUwMDFjXyDEsnR2g7P1UmLRuC1AIVx1MDAwM2cspORCXHUwMDEwt7/auJPvcUBcdTAwMTgzRL07uFx1MDAxZsDXXHUwMDA3Vs69XHUwMDA2cVwiKVx1MDAxYWPSW/hcdTAwMDNut1x1MDAxNTUwS+Wzl4KuUFx1MDAwMiM+v+/y0JCwTitcdTAwMTk8Ltdqhrhzmq9nXHUwMDBmKSeTj1x1MDAwNFx0glx1MDAwMFx1MDAwMstcdTAwMTFTbEmqwM1AXHUwMDAySYkkXHUwMDEx4e3Xv9PJtl/+eeUsRvFcdTAwMTGC+eSofIovUcxcdTAwMDSW0VbO7ppcdTAwMTCRjc+PXHUwMDEw4cPu36368S8rMIuFY8pibfC5XlxcvLd0y6lccsJcdTAwMDPHZlxiXG6GXHUwMDAwoeFl95Qy8+BcdTAwMWFcdTAwMTaq+fTI6b2UZsUsTHhqXHUwMDE4eqY24HZcdTAwMWLAg6Hht1x1MDAwM4+taFx1MDAwZUFEJaFcdTAwMTBcdTAwMWS6gFx1MDAwMb9LXHUwMDBmz1KUYKN2PSStVFx1MDAxZL88XyRcdTAwMTBcdTAwMWKEXHUwMDA3XHUwMDBle5Bcbi1cYiAy/Npw/04n2n4pYJ5hXHUwMDBm5Pw4xsLLPuhYzSlBQTBFlH5/dIRPNVx1MDAwNU97XHUwMDA0ZJu2XHUwMDA1xlx1MDAwNm+74zlwXHUwMDFlXFx4mVJcZiWVPDwoLq+r58bVgzk9169cdTAwMWX1U433zIeglYSJyUO590vvv0L/qsbIfO5cdTAwMDOwg2/W7uHOMH+aXHUwMDFlvTRSaeKASrveeExHTENcdFx1MDAwMFx1MDAwZbomSlx1MDAxMK6aoLxWaFx1MDAxM/bvdaJZXHUwMDAxuU+J/jhZXHUwMDExslx1MDAxYyaS81xcVJRZvJ3XV6ZcdTAwMDSKbat3hM9DNVx1MDAwN1x1MDAwM9NcdTAwMTdcdTAwMTVx1Vbe4G+9qFi0b1x1MDAwYlRcdTAwMDRcdTAwMTfKpFx1MDAxMlx0XHUwMDBlXHUwMDAwjVBcdTAwMDbnuq9nx/3C49NZ9v5CWftMXHUwMDE0+t9cdTAwMDBcdTAwMTVBNWd3XHUwMDEw229LXHUwMDBlXHUwMDA1jfnQyP2YXHUwMDBlRI5cbiH6XHUwMDE4pVx1MDAxYefFk5yVeeg4MNONRlx1MDAwZUokjr1Gv1xinsBcdTAwMTBMqFx1MDAwMTeNMFx1MDAwN+ff6WSDg8ljts6c46RcYvNcdJxXKaJG+lx1MDAxNGKE8WExwtz7aeLGiGE5jOyVI1x1MDAxYpyxlyNvXHLcXHUwMDA2JIE5YUwoJ5BFKK5ZsMu0/jps31xm78dwmmnSU/hAv1x1MDAwMUg+S23L9NSW5CBYYizgwctrzq4k0NjzyaSKUbqf6lx1MDAxNZDMZFx1MDAxMlx1MDAxOXJcdTAwMDQuXHUwMDE4hFxmMaJGQlwifHrKv9dcdCeHXHUwMDA3XHUwMDE1LE5UhKtcdTAwMGYlJFx1MDAwNJRcdTAwMDFcdTAwMTDFiHf/Qlx1MDAxN1x1MDAwNF3haNykXHUwMDE471x1MDAxZlx1MDAxNVx1MDAxYtytXHUwMDE3XHUwMDE1461ZIYJ37EGpRi5cZkdcdTAwMTik1cu5cuakaIJpS3CITnKwM9a/XHUwMDFiLOKqJlx1MDAxOFx1MDAxMlx1MDAxNlx1MDAxOFAsXHUwMDAw2WH9za/B4pmWRL7SdmhcdTAwMTeNT87bOeNGo9G2aexcdFx1MDAxNi62ey2YS0LnS0nDXHUwMDBmd/x7/a1gQcDhYcEkXHUwMDEwXHUwMDE4XG5yUFhQKV1zLLG//Wswbpr+U1x1MDAxOXHBYoO7XXn311tcdTAwMGK/XHUwMDBlXHUwMDBiXHUwMDAxXHUwMDAzU8FUgUTpXGaFV1x1MDAxYTL0y1RcdTAwMDZd5Gaj3MNcdTAwMDVg51x1MDAxZCtcdTAwMWT0stbEsIJ45r1cdTAwMGY9mcEgU2aO2aEji3K9nanj01KLnV9Z/c6LxVolkEhYXHUwMDA0105mgkDpdlmbLNi/04lmXHUwMDA1YXyvc1x1MDAxOS5/sG5RrVTei1x1MDAxM3dtiEPEXHUwMDE2XHUwMDEykf1NZlx1MDAxOPZeUbHB266koOytitFcdTAwMDbnfYWSuYyyh0kvtobDydNlUSdn51x1MDAxOVx1MDAwMz7KIVxyKjyYWEx43zW83b6lbVx1MDAwM1xmXHUwMDE11WHO5aFcdTAwMDOMRn2QSWWv2/mX6sVVeTawxqx/XHUwMDEzjVx1MDAxOVx1MDAxY1x1MDAwMFx1MDAxN4DjYoZcYjRnXHUwMDA0IFx1MDAxNFjSXGL7V/17nWxokNWJXHUwMDBititr3kXlcqRaXGKYiDIvt3N6cCgjvad0O3qMxk1L3/GmjFxyXHUwMDA02eCIvVx1MDAwNPndwq9TXHUwMDA0guBoXHUwMDAzXCL1tFx1MDAxOSdcdTAwMTHeM6xnM8brvd5omP389W1hcNExa3bSOeJ9z/Chw1xyKiliXHUwMDE0skPPgL9cXLTzpGrAXHUwMDFj7zTuRrada1x1MDAxNau5XHUwMDA0buGDIPg9d0hiwVx1MDAwMEHhTdi/14lGXHUwMDA3XHUwMDE1xGPAh89NUa7YhWGkwps738FHXHSmce3n9sGFMzSs7n5xsd7fruDirYVb4VwicJiGMZaQglxiof1trWWdtJ9cdTAwMWJcdTAwMTKVn1m+efVYyWet70aLt6jjMG+l91s+pcZIqjU0ylKTOOBRKp71rdq01yT0Li9cbrRcdTAwMGbKXHUwMDE30fZoqF5IXHUwMDE2e65cboLgwFx1MDAwM0IyXzTjrlx0scmk/budbHq4XHUwMDE2sixcdTAwMDOPvbyTXvjV0lmNPLiQXGZAXHUwMDBlotj07lnCXHUwMDEw3t+kuK05XG5cZtZeYbLBXHUwMDFke2Hy3sQvyW7N2lx1MDAxM1xuVODBZITpxLo9kXaJPo/NziXNXVx1MDAxNIbjoTbZqejaXHUwMDAzZ375XHUwMDFkqk5105sjJmy7UVsgO6TfWvfVuFx1MDAwM1x1MDAwM67+4v28jIZKNTiM69Vkq1x1MDAxYqBOhobTe9KVXHUwMDFlfCX15W1QXy2742rPl/RcdTAwMTNcZi2BIFx1MDAxMTjKMIzctuvVSlx1MDAxM456ylmfmY/jiT5cdTAwMTkkXFw+SO5NPD7jrlXxSIzVaFx1MDAwNfLdXHK7kqOdqv5kXHUwMDBmhpr/rpC9K+ejNV/SjVxmnJmkXGKp4EXw8LrJnN7NXHUwMDFljGKx2ivP9HOrdP9QK+72bU2711xy8e5cdTAwMTOMTTc8XHUwMDE0dDinXHUwMDAwScD+ROZcdTAwMTR152Uw7CdDNu+N+ZJq3HPGK6u/XHUwMDA0UTdcdTAwMTZEKOCTy5Q7oG50L+7liUlmXHUwMDBmXHUwMDFk41x1MDAwZdVcdTAwMTOuXHUwMDFi6tqpXHUwMDFmr25oqE3sXHUwMDE4z9ej8Fx1MDAxZC5JSY5uKsF5tL3Lplx1MDAxMlwiY1x1MDAxNqhcdTAwMWFcdTAwMTn4ulhcdTAwMDQwkuTTxtKN62BS1cvmfV9i2Vx1MDAxNVfTs7psnVx1MDAxOEF7XHKTolx1MDAxYU7FnlRcdTAwMDOBXyrBZ186lVx1MDAwMlJI/sRxWvrdrEfJ0I6rPW/6+et3vu9Is+2Ko+7V0Xue5mhi6C+nflWYXHUwMDE3f+bfX6hvbub6XCK98+uvX/9cdTAwMDXLXGJwXHUwMDFmIn0=time duration enum Field 1 Field N ... record Field 1 Field N ... : Type Type ... : list Element Type Type bool int64 uint64 double ip subnet string pattern Arithmetic Temporal Network String Containers
Basic Types Basic types are stateless types with a static structure. Their representation
is known a-priori.
The following tables summarizes the basic types.
Type Description none
Denotes an absent or invalid value bool
A boolean value int64
A 64-bit signed integer uint64
A 64-bit unsigned integer double
A 64-bit double (IEEE 754) duration
A time span (nanosecond granularity) time
A time point (nanosecond granularity) string
A sequence of characters pattern
A regular expression ip
An IPv4 or IPv6 address subnet
An IPv4 or IPv6 subnet
Complex Types Complex types are stateful types that carry additional runtime information.
Enumeration The enum
type is a list of predefined string values. It comes in handy for
low-cardinality values from a fixed set of options.
VAST implements an enum
as an Arrow Dictionary.
List The list
type is an ordered sequence of values with a fixed element type.
Lists have zero or more elements.
Record The record
type consists of an ordered sequence fields , each of which have a
name and type. Records must have at least one field.
The field name is an arbitrary UTF-8 string.
The field type is any VAST type.
Optionality All types are optional in that there exists an additional null
data point in
every value domain. Consequently, VAST does not have a special type to indicate
optionality.
Attributes Every type has zero or more attributes , which are free-form key-value pairs
to enrich types with custom semantics.
Aliases An alias wraps an existing type under a new name. Aliases are first-class types,
meaning you can also attach separate attributes to them.
All alias types have a name. They coexist in a global namespace.
An alias always refines the type it points to, i.e., it is more specific that
its parent. For example, let's assume a type U
is an alias for an existing
type T
. Then, the type
extractor :U
only
resolves for types of instance U
. However, :T
comprises both instances of
types U
and T
.
Type Construction VAST comes with a lean type definition language. Think JSON
schema fused with Kaitai , with
the goal that humans can jot it down quickly. We use YAML as vehicle to express
the structure because that's already VAST's language for configuration.
How do you create a type? Let T
be an existing type, then you can construct a
new type like this:
type : T attributes : - key : value - value
This begs a recursive question: what are valid values for T
?
The answer: basic types, such as bool
, string
, ip
, or complex types
defined according the rules described below.
Alias Type Use a dictionary to give an existing type a new name:
This introduces a type with the name url
.
Instead of referencing an existing type, you can also provide an inline
definition of a type:
url : type : string attributes : - unescaped
Aliases nest. For example, you can create three aliased types A
→ B
→ C
→
string
like this:
Enumeration Type Use an enum
dictionary with a list of allowed values to define it:
List Type Use the list
key to define list with a corresponding element type on the
right-hand side:
Lists nest naturally:
list : list : enum : - on - off
Record Type Use the record
key to define a list of fields:
record : - src_ip : ip - dst_ip : ip - src_port : port - dst_port : port - proto : string
Records nest naturally:
record : - src : record : - ip : ip - port : uint64 - dst : record : - ip : ip - port : uint64 - proto : string
We can also factor nested records into dedicated types:
endpoint : record : - ip : ip - port : uint64
Thereafter we can reference the endpoint
type by its name:
record : - src : endpoint - dst : endpoint
Records of lists:
record : - values : list : string
Lists of records:
list : record : - question : string - correct : bool
Record Algebra In addition to nesting records, a frequent use case is embedding fields of
one record into another. This occurs often with families of event types that
share a large portion of fields. Algebraically, we want to "add" the two records
together to combine their field.
For example, consider this common
record with a single field shared
:
common : record : - shared : type : bool
To embed common
in another record, reference it using the base
key. This
requires moving the fields one layer down under the fields
key:
record : base : - common fields : - unique : string
The effect is the same specifying a single record with two fields:
record : - shared : bool - unique : string
There are three special keys under the record
key that control what to do when
field name clashes occur between the two records:
base
: raise an errorimplant
: prefer the base recordextend
: prefer the current recordComparison to Arrow All VAST types have a lossless mapping to Arrow types, however, not all Arrow
types have a VAST equivalent. As a result, it is currently not yet possible to
import arbitrary Arrow data. In the future, we plan to extend our support for
Arrow-native types and also offer conversion options for seamless data handover.
VAST has a few domain-specific types that map to Arrow extension
types . These are currently:
Note that VAST attaches attributes to a top-level type instance, where Arrow
only allows type meta data for record fields.
VAST treats type meta data differently from Arrow. In VAST, the type is the
component that contains metadata. In Arrow, it's the record field or the schema.
As a result, we can simply define a schema as named record type.
If you want to learn more about why VAST uses Apache Arrow, please read our
two blog
posts that explain why
we build on top of Arrow.