Return to search

Secondary indexing for the HBase distributed database

Most traditional database systems offer secondary indexing to increase the performance of data reads during query execution. With the advent of newer, NoSQL distributed datastores, some don't yet have a secondary indexing feature built in. HBase is one such distributed database system. It partitions tables in so-called table regions across many nodes but does not offer secondary indexing. Since some types of queries may benefit from secondary indexing in order to improve their performance, we endeavoured to implement such secondary indexing for HBase. In this thesis, we present and compare two coprocessor based secondary indexing implementations.The first implementation, Table Based Secondary Indexing, leverages HBase tables to store the secondary indices. Query processing in our first implementation is split between the client and the servers.Our second implementation, In Memory Secondary Indexing, relies on indices that are partitioned and are co-located in the main memory of the table regions they index. Query processing in our second implementation is executed solely at the server level.Our experimental results show that both our implementations offer a substantial gain in read performance over the default HBase method of executing queries, which scans all table regions when executing read queries. / La majorité des systèmes de bases de données traditionnels ont un mécanisme d'indexation secondaire qui offre une performance accrue lors de requêtes en lecture. Du au développement récent des systèmes de base de données distribués, certains n'ont pas encore de mécanisme d'indexation secondaire. HBase est un de ces systèmes qui n'offre pas d'index secondaires. Dû au fait que la performance de certains types de requêtes peuvent bénéficier grandement des index secondaires, nous nous sommes engagés à créer ce mécanisme pour HBase. Dans cette thèse, nous faisons la présentation et la comparaison de deux solutions que nous avons créées qui basées sur l'utilisation des coprocesseurs de HBase.La première solution repose sur l'utilisation des tables offertes par HBase pour emmagasiner les index secondaires. Dans notre première solution, l'exécution de requêtes utilisant un index secondaire est partagée entre le client et le serveur.La seconde solution se base sur le fait que les index secondaire sont partitionnés pour correspondre aux régions de tables et sont co-localisées avec celles-ci. De plus, les index secondaires résident dans la mémoire active des serveurs. Dans notre deuxième solution, l'exécution de requêtes utilisant un index secondaire est faite uniquement par les serveurs.Nos résultats expérimentaux montrent que nos deux solutions offrent un gain de performance substantiel lors d'exécutions de requêtes en lecture comparé à la méthode native à HBase.

Identiferoai:union.ndltd.org:LACETR/oai:collectionscanada.gc.ca:QMM.123297
Date January 2014
CreatorsRuiz-Carrillo, Roger
ContributorsBettina Kemme (Internal/Supervisor)
PublisherMcGill University
Source SetsLibrary and Archives Canada ETDs Repository / Centre d'archives des thèses électroniques de Bibliothèque et Archives Canada
LanguageEnglish
Detected LanguageFrench
TypeElectronic Thesis or Dissertation
Formatapplication/pdf
CoverageMaster of Science (School of Computer Science)
RightsAll items in eScholarship@McGill are protected by copyright with all rights reserved unless otherwise indicated.
RelationElectronically submitted theses

Page generated in 0.0019 seconds