apache / apache/lucene

A Sharding Split Policy For Load-Sharing Index Writes [LUCENE-2435]

Open
#3,509 0 comments 0 reactions 0 assignees View on GitHub
affects-version:3.0.1 legacy-jira-priority:Major module:core/index type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

(Please note that the feature described in #3499 is required reading for this issue.)

The sharding split policy builds on the remoting split policy, treating each sub-index as a shard of the split index. Optionally, the super-index on which the split writer is built may also be considered to be a shard. The motivation for this policy is to allow a given index to be partitioned across multiple nodes (that define a cluster), which helps to (a) load-balance document writes across the nodes in that cluster and (b) serve search requests from a (narrower) set of sub-indices (that the split rule routes the query to).

Unlike other sharding solutions for Lucene, this approach gives users the ability to (a) pick and choose the types of directories underlying the mirror, and (b) add/remove shards on the fly.

---
Migrated from [LUCENE-2435](https://issues.apache.org/jira/browse/LUCENE-2435) by Karthick Sankarachary
Attachments: [LUCENE-2435.patch](https://apache.github.io/lucene-jira-archive/attachments/LUCENE-2435/LUCENE-2435.patch)
Linked issues:
- #3499

Contributor guide

Open the contributing guide

Research direction

Read linked issue #3499 first, since this issue states that its feature is required background. Then review the attached LUCENE-2435.patch and compare its proposed sharding split policy with the remoting split policy described here. Done means defining and implementing the load-sharing sharding behavior, including shard selection and adding or removing shards on the fly.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.