LinkedIn a ouvert le code source de PalDB, une base de données embarquée clé-valeur en lecture-seule, 8 fois plus rapide que LevelDB et plusieurs fois moins consommatrice en mémoire qu'un hashset.
PalDB est une base de données open source, clé-valeur permettant l'écriture une seule fois et faite par LinkedIn en Java. Après la création du store, toutes les opérations permises seront en lecture seule. Le but est d'améliorer les opérations de lecture et de réduire l'empreinte mémoire. LinkedIn la recommande pour le stockage des données secondaires. Ils définissent les données secondaires comme "les données en lecture seule supplémentaires requises par un processus pour faire son travail. Par exemple, une liste de mots d'arrêt utilisés par un algorithme de traitement en langage naturel sont des données secondaires. "
PalDB est intégrable, elle n’utilise pas de schéma et conserve les données dans un fichier binaire. Elle offre un accès aléatoire aux données via une API.
Étant optimisée pour les opérations de lecture, sa performance est comparable à d'autres structures de données en mémoire telles que HashMap ou HashSet, selon LinkedIn. Par contre, elle prend beaucoup moins d'espace mémoire, l'un des principaux avantages que l'entreprise recherchaient dès sa conception. Par exemple, 100 M de clés en HashSet ont besoin de plus de 500 MB, alors que PalDB réserve environ 80 MB. De même, 35 M d’ID membres ont besoin de 1,8 Go de RAM dans un hashset, par rapport à 290 MB pour PalDB. Les données peuvent être compressées par PalDB en utilisant Snappy, même pour une empreinte réduite.
En termes de vitesse, un test effectué par LinkedIn montre que PalDB fait 2M de lectures/s, ou 6 fois plus rapide qu’un HashSet et 8 fois plus rapide que LevelDB ou RocksDB, sur un MacBook Pro 3,1 GHz et un index de 10M-clés.
PalDB a été optimisé pour les accès mémoire. En effet, garder les données sur le disque se traduit par des performances nettement moins bonnes. Bien qu'il n'y ait pas de limitation dans la taille des données, la taille de l'index est limité à 2 Go. Il est également important de savoir que PalDB n’est pas thread-safe.