Loading…

SPIRIT: Scalable and Persistent In-Memory Indices for Real-Time Search

Today, real-time search over big microblogging data requires low indexing and query latency. Online services, therefore, prefer to host inverted indices in memory. Unfortunately, as datasets grow, indices grow proportionally, and with limited DRAM scaling, the main memory faces high pressure. Also,...

Full description

Saved in:
Bibliographic Details
Published in:ACM transactions on architecture and code optimization 2024-11
Main Authors: Akram, Shoaib, Hasnat, Adnan
Format: Article
Language:English
Subjects:
Citations: Items that this one cites
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by
cites cdi_FETCH-LOGICAL-a511-cdc119678f823da2423566dc04c2551ebcf102a883a56a4496afc6497c10fc6d3
container_end_page
container_issue
container_start_page
container_title ACM transactions on architecture and code optimization
container_volume
creator Akram, Shoaib
Hasnat, Adnan
description Today, real-time search over big microblogging data requires low indexing and query latency. Online services, therefore, prefer to host inverted indices in memory. Unfortunately, as datasets grow, indices grow proportionally, and with limited DRAM scaling, the main memory faces high pressure. Also, indices must be persisted on disks as building them is computationally intensive. Consequently, it becomes necessary to frequently move on-heap index segments to storage, slowing down indexing. Reading storage-resident index segments requires filesystem calls and disk accesses during query evaluation, leading to high and unpredictable tail latency. This work exploits hybrid DRAM and scalable non-volatile memory (NVM) to offer dynamically growing and instantly searchable (i.e., real-time) persistent indices in on-heap memory. We implement SPIRIT, a real-time text inversion engine over hybrid memory. SPIRIT exploits the byte-addressability of hybrid memory to enable direct access to the index on a pre-allocated heap, eliminating expensive block storage accesses and filesystem calls during live operation. It uses an in-memory segment descriptor table to offer: ① instant segment availability to query evaluators upon fresh ingestion, ② low-overhead segment movement across memory tiers transparent to query evaluators, and ③ decoupled segment movement into NVM from their visibility to query evaluators, enabling different policies for mitigating NVM latency. SPIRIT accelerates compaction with zero-copy merging. It supports volatile, graceful shutdown, and crash-consistent indexing modes. The latter two modes offer instant recovery using persistent pointers. SPIRIT with hybrid memory and strong crash consistency guarantees exhibits many orders of magnitude better tail response times and query throughout than the state-of-the-art Lucene search engine. Compared against a highly optimized non-real-time evaluation of Lucene with liberal DRAM size, on average, across six query workloads, SPIRIT still delivers 2.5 × better (real-time) query throughput. Our work applies to other services that will benefit from direct on-heap access to large persistent indices.
doi_str_mv 10.1145/3703351
format article
fullrecord <record><control><sourceid>acm_cross</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3703351</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>3703351</sourcerecordid><originalsourceid>FETCH-LOGICAL-a511-cdc119678f823da2423566dc04c2551ebcf102a883a56a4496afc6497c10fc6d3</originalsourceid><addsrcrecordid>eNo9j0tLw0AUhQdRsFZx72p2rkbnziuJOylWAxVLk324nQdG8pCZbvrvTWnr6nxwPi73EHIP_AlA6WeZcSk1XJAZaKWYLDJ5eWZtzDW5SemHc1EIzmdkWa3LTVm_0Mpih9vOUxwcXfuY2rTzw46WA_v0_Rj3E7nW-kTDGOnGY8fqtve08hjt9y25Ctglf3fKOamXb_Xig62-3svF64qhBmDWWYDCZHnIhXQolDh85CxXVmgNfmsDcIF5LlEbVKowGKxRRWaBT-DknDwez9o4phR9aH5j22PcN8Cbw_rmtH4yH44m2v5fOpd_NBZSCQ</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>SPIRIT: Scalable and Persistent In-Memory Indices for Real-Time Search</title><source>Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)</source><creator>Akram, Shoaib ; Hasnat, Adnan</creator><creatorcontrib>Akram, Shoaib ; Hasnat, Adnan</creatorcontrib><description>Today, real-time search over big microblogging data requires low indexing and query latency. Online services, therefore, prefer to host inverted indices in memory. Unfortunately, as datasets grow, indices grow proportionally, and with limited DRAM scaling, the main memory faces high pressure. Also, indices must be persisted on disks as building them is computationally intensive. Consequently, it becomes necessary to frequently move on-heap index segments to storage, slowing down indexing. Reading storage-resident index segments requires filesystem calls and disk accesses during query evaluation, leading to high and unpredictable tail latency. This work exploits hybrid DRAM and scalable non-volatile memory (NVM) to offer dynamically growing and instantly searchable (i.e., real-time) persistent indices in on-heap memory. We implement SPIRIT, a real-time text inversion engine over hybrid memory. SPIRIT exploits the byte-addressability of hybrid memory to enable direct access to the index on a pre-allocated heap, eliminating expensive block storage accesses and filesystem calls during live operation. It uses an in-memory segment descriptor table to offer: ① instant segment availability to query evaluators upon fresh ingestion, ② low-overhead segment movement across memory tiers transparent to query evaluators, and ③ decoupled segment movement into NVM from their visibility to query evaluators, enabling different policies for mitigating NVM latency. SPIRIT accelerates compaction with zero-copy merging. It supports volatile, graceful shutdown, and crash-consistent indexing modes. The latter two modes offer instant recovery using persistent pointers. SPIRIT with hybrid memory and strong crash consistency guarantees exhibits many orders of magnitude better tail response times and query throughout than the state-of-the-art Lucene search engine. Compared against a highly optimized non-real-time evaluation of Lucene with liberal DRAM size, on average, across six query workloads, SPIRIT still delivers 2.5 × better (real-time) query throughput. Our work applies to other services that will benefit from direct on-heap access to large persistent indices.</description><identifier>ISSN: 1544-3566</identifier><identifier>EISSN: 1544-3973</identifier><identifier>DOI: 10.1145/3703351</identifier><language>eng</language><publisher>New York, NY: ACM</publisher><subject>Hardware ; Information systems ; Main memory engines ; Memory and dense storage ; Search engine indexing</subject><ispartof>ACM transactions on architecture and code optimization, 2024-11</ispartof><rights>Copyright held by the owner/author(s).</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><cites>FETCH-LOGICAL-a511-cdc119678f823da2423566dc04c2551ebcf102a883a56a4496afc6497c10fc6d3</cites><orcidid>0000-0003-2388-0517 ; 0009-0003-3580-3102</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27903,27904</link.rule.ids></links><search><creatorcontrib>Akram, Shoaib</creatorcontrib><creatorcontrib>Hasnat, Adnan</creatorcontrib><title>SPIRIT: Scalable and Persistent In-Memory Indices for Real-Time Search</title><title>ACM transactions on architecture and code optimization</title><addtitle>ACM TACO</addtitle><description>Today, real-time search over big microblogging data requires low indexing and query latency. Online services, therefore, prefer to host inverted indices in memory. Unfortunately, as datasets grow, indices grow proportionally, and with limited DRAM scaling, the main memory faces high pressure. Also, indices must be persisted on disks as building them is computationally intensive. Consequently, it becomes necessary to frequently move on-heap index segments to storage, slowing down indexing. Reading storage-resident index segments requires filesystem calls and disk accesses during query evaluation, leading to high and unpredictable tail latency. This work exploits hybrid DRAM and scalable non-volatile memory (NVM) to offer dynamically growing and instantly searchable (i.e., real-time) persistent indices in on-heap memory. We implement SPIRIT, a real-time text inversion engine over hybrid memory. SPIRIT exploits the byte-addressability of hybrid memory to enable direct access to the index on a pre-allocated heap, eliminating expensive block storage accesses and filesystem calls during live operation. It uses an in-memory segment descriptor table to offer: ① instant segment availability to query evaluators upon fresh ingestion, ② low-overhead segment movement across memory tiers transparent to query evaluators, and ③ decoupled segment movement into NVM from their visibility to query evaluators, enabling different policies for mitigating NVM latency. SPIRIT accelerates compaction with zero-copy merging. It supports volatile, graceful shutdown, and crash-consistent indexing modes. The latter two modes offer instant recovery using persistent pointers. SPIRIT with hybrid memory and strong crash consistency guarantees exhibits many orders of magnitude better tail response times and query throughout than the state-of-the-art Lucene search engine. Compared against a highly optimized non-real-time evaluation of Lucene with liberal DRAM size, on average, across six query workloads, SPIRIT still delivers 2.5 × better (real-time) query throughput. Our work applies to other services that will benefit from direct on-heap access to large persistent indices.</description><subject>Hardware</subject><subject>Information systems</subject><subject>Main memory engines</subject><subject>Memory and dense storage</subject><subject>Search engine indexing</subject><issn>1544-3566</issn><issn>1544-3973</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2024</creationdate><recordtype>article</recordtype><recordid>eNo9j0tLw0AUhQdRsFZx72p2rkbnziuJOylWAxVLk324nQdG8pCZbvrvTWnr6nxwPi73EHIP_AlA6WeZcSk1XJAZaKWYLDJ5eWZtzDW5SemHc1EIzmdkWa3LTVm_0Mpih9vOUxwcXfuY2rTzw46WA_v0_Rj3E7nW-kTDGOnGY8fqtve08hjt9y25Ctglf3fKOamXb_Xig62-3svF64qhBmDWWYDCZHnIhXQolDh85CxXVmgNfmsDcIF5LlEbVKowGKxRRWaBT-DknDwez9o4phR9aH5j22PcN8Cbw_rmtH4yH44m2v5fOpd_NBZSCQ</recordid><startdate>20241104</startdate><enddate>20241104</enddate><creator>Akram, Shoaib</creator><creator>Hasnat, Adnan</creator><general>ACM</general><scope>AAYXX</scope><scope>CITATION</scope><orcidid>https://orcid.org/0000-0003-2388-0517</orcidid><orcidid>https://orcid.org/0009-0003-3580-3102</orcidid></search><sort><creationdate>20241104</creationdate><title>SPIRIT: Scalable and Persistent In-Memory Indices for Real-Time Search</title><author>Akram, Shoaib ; Hasnat, Adnan</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-a511-cdc119678f823da2423566dc04c2551ebcf102a883a56a4496afc6497c10fc6d3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2024</creationdate><topic>Hardware</topic><topic>Information systems</topic><topic>Main memory engines</topic><topic>Memory and dense storage</topic><topic>Search engine indexing</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Akram, Shoaib</creatorcontrib><creatorcontrib>Hasnat, Adnan</creatorcontrib><collection>CrossRef</collection><jtitle>ACM transactions on architecture and code optimization</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Akram, Shoaib</au><au>Hasnat, Adnan</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>SPIRIT: Scalable and Persistent In-Memory Indices for Real-Time Search</atitle><jtitle>ACM transactions on architecture and code optimization</jtitle><stitle>ACM TACO</stitle><date>2024-11-04</date><risdate>2024</risdate><issn>1544-3566</issn><eissn>1544-3973</eissn><abstract>Today, real-time search over big microblogging data requires low indexing and query latency. Online services, therefore, prefer to host inverted indices in memory. Unfortunately, as datasets grow, indices grow proportionally, and with limited DRAM scaling, the main memory faces high pressure. Also, indices must be persisted on disks as building them is computationally intensive. Consequently, it becomes necessary to frequently move on-heap index segments to storage, slowing down indexing. Reading storage-resident index segments requires filesystem calls and disk accesses during query evaluation, leading to high and unpredictable tail latency. This work exploits hybrid DRAM and scalable non-volatile memory (NVM) to offer dynamically growing and instantly searchable (i.e., real-time) persistent indices in on-heap memory. We implement SPIRIT, a real-time text inversion engine over hybrid memory. SPIRIT exploits the byte-addressability of hybrid memory to enable direct access to the index on a pre-allocated heap, eliminating expensive block storage accesses and filesystem calls during live operation. It uses an in-memory segment descriptor table to offer: ① instant segment availability to query evaluators upon fresh ingestion, ② low-overhead segment movement across memory tiers transparent to query evaluators, and ③ decoupled segment movement into NVM from their visibility to query evaluators, enabling different policies for mitigating NVM latency. SPIRIT accelerates compaction with zero-copy merging. It supports volatile, graceful shutdown, and crash-consistent indexing modes. The latter two modes offer instant recovery using persistent pointers. SPIRIT with hybrid memory and strong crash consistency guarantees exhibits many orders of magnitude better tail response times and query throughout than the state-of-the-art Lucene search engine. Compared against a highly optimized non-real-time evaluation of Lucene with liberal DRAM size, on average, across six query workloads, SPIRIT still delivers 2.5 × better (real-time) query throughput. Our work applies to other services that will benefit from direct on-heap access to large persistent indices.</abstract><cop>New York, NY</cop><pub>ACM</pub><doi>10.1145/3703351</doi><orcidid>https://orcid.org/0000-0003-2388-0517</orcidid><orcidid>https://orcid.org/0009-0003-3580-3102</orcidid><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 1544-3566
ispartof ACM transactions on architecture and code optimization, 2024-11
issn 1544-3566
1544-3973
language eng
recordid cdi_crossref_primary_10_1145_3703351
source Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)
subjects Hardware
Information systems
Main memory engines
Memory and dense storage
Search engine indexing
title SPIRIT: Scalable and Persistent In-Memory Indices for Real-Time Search
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-25T22%3A19%3A02IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-acm_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=SPIRIT:%20Scalable%20and%20Persistent%20In-Memory%20Indices%20for%20Real-Time%20Search&rft.jtitle=ACM%20transactions%20on%20architecture%20and%20code%20optimization&rft.au=Akram,%20Shoaib&rft.date=2024-11-04&rft.issn=1544-3566&rft.eissn=1544-3973&rft_id=info:doi/10.1145/3703351&rft_dat=%3Cacm_cross%3E3703351%3C/acm_cross%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-a511-cdc119678f823da2423566dc04c2551ebcf102a883a56a4496afc6497c10fc6d3%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true