Module SQLite

Une base de données SQLite est intégrée à nzLua afin de fournir un moyen de conserver les données en dehors d'une transaction Netezza. Le premier cas d'utilisation de cette fonctionnalité est la journalisation de débogage, mais elle peut également être utilisée pour stocker des tables de consultation ou des données supplémentaires qui ne peuvent pas être directement renvoyées à la base de données Netezza à partir d'un UDX (par exemple, lorsqu'un UDTF doit renvoyer plusieurs ensembles de résultats distincts au lieu d'un seul ensemble de résultats).

La fonction SPUPad offre généralement de meilleures performances à cette fin, mais toutes les données du SPUPad disparaissent à la fin de chaque transaction, alors que les données de la base de données SQLite sont conservées jusqu'au redémarrage de la base de données ou jusqu'à ce qu'une lame s échoue.

La quantité maximale de données pouvant être stockées dans une base de données SQLite est plafonnée à 1GB Une base de données SQLite volumineuse peut avoir un impact substantiel sur la performance globale de la base de données Netezza en raison des demandes d'E/S aléatoires pour les recherches d'index et la maintenance de l'index pendant les insertions. La base de données SQLite sera mise en cache en mémoire dans la mesure du possible afin d'éviter des entrées/sorties aléatoires excessives. Toutefois, au fur et à mesure que la taille de la base de données augmente, il se peut que la mémoire ne soit plus disponible. Il en résulte de nombreuses petites demandes d'E/S, qui interfèrent avec les lectures séquentielles de la base de données Netezza.

Une base de données SQLite unique existe pour chaque tranche de données. Deux UDX fonctionnant simultanément sur la même tranche de données accéderont à la même base de données SQLite. Il n'est pas possible pour un UDX de partager des données entre tranches de données à l'aide de SQLite. La base de données SQLite ne prend pas en charge le verrouillage au niveau des lignes. Toute instruction d'insertion, de mise à jour ou de suppression verrouille l'ensemble de la base de données SQLite pendant la durée de la transaction. Par défaut, SQLite fonctionne en mode "autocommit", où chaque instruction DML est validée immédiatement.

Une documentation détaillée sur SQLite, y compris la syntaxe SQL prise en charge par SQLite, est disponible à l'http://www.sqlite.org. Quelques exemples d'utilisation de SQLite à partir d'un UDX nzLua peuvent être trouvés dans le répertoire '/nz/extensions/nz/nzlua/examples/SQLite.