oracle / coherence

Oracle Coherence Community Edition
https://coherence.community
Universal Permissive License v1.0
427 stars 70 forks source link

Need some advice about Coherent indexes #67

Closed javafanboy closed 2 years ago

javafanboy commented 2 years ago

A need some general advice on how Indexes work from a consistency and backup point of view? Lets say I update some data spread over multiple partitions using an entry processor - when are the indexes updated with those changes? Also are Coherence indexes backed up over several nodes (how many, asynch or synch...)?

thegridman commented 2 years ago

Indexes are updated at the same time an entry is mutated. So a slow value extractor used for an index can impact write performance (and yes we have seen people try to access a DB from an index extractor 😮). Indexes are not backed up so when a partition moves, due to redistribution on member join or member left, then the indexes are rebuilt for the moved partitions.

javafanboy commented 2 years ago

Thanks - that was basically what I was hoping for.

While indexes are re-rebuilt will queries making use of them be "suspended" or fail?

On Tue, May 17, 2022 at 12:08 PM Jonathan Knight @.***> wrote:

Indexes are updated at the same time an entry is mutated. So a slow value extractor used for an index can impact write performance (and yes we have seen people try to access a DB from an index extractor 😮). Indexes are not backed up so when a partition moves, due to redistribution on member join or member left, then the indexes are rebuilt for the moved partitions.

— Reply to this email directly, view it on GitHub https://github.com/oracle/coherence/issues/67#issuecomment-1128677458, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADXQFZ2I7NAPPBCISHWRCDVKNVX5ANCNFSM5WEIITVA . You are receiving this because you authored the thread.Message ID: @.***>

thegridman commented 2 years ago

Queries are blocked until the index has finished building. Releated to your other questions about reading from nearest cluster member, queries will always execute on the primary owners. This makes sense really as a query is cluster wide anyway so will run on all cluster members (unless it is a partitioned query, which is restricted to specific partitions).