Sending this question out again to learn about how well Time Routed Aliases
have worked out for others.

Would like to know if a number of others have used this approach
successfully as our team is planning for the use of TRAs in a very large
SolrCloud deployment.

Thanks,
Matt

On Fri, Aug 13, 2021, 2:56 PM Matt Kuiper <kuipe...@gmail.com> wrote:

> Thanks David, this test link is helpful.
>
> @David @Gus - From your viewpoint do you see TRAs as an accepted/proven
> technique within SolrCloud?  My small POC works great.  Would like to hear
> if others are using TRA in production deployments successfully at scale.
>
> Thanks,
> Matt
>
> On Wed, Aug 11, 2021 at 8:10 PM David Smiley <dsmi...@apache.org> wrote:
>
>> I hope you have success with TRAs!
>>
>> You can delete some number of collections from the rear of the chain, but
>> you must first update the TRA to exclude these collections.  This is
>> tested:
>>
>> https://github.com/apache/solr/blob/f6c4f8a755603c3049e48eaf9511041252f2dbad/solr/core/src/test/org/apache/solr/update/processor/TimeRoutedAliasUpdateProcessorTest.java#L184
>> It'd be nice if it would remove itself from the alias.
>>
>> ~ David Smiley
>> Apache Lucene/Solr Search Developer
>> http://www.linkedin.com/in/davidwsmiley
>>
>>
>> On Tue, Aug 10, 2021 at 9:26 PM Matt Kuiper <kuipe...@gmail.com> wrote:
>>
>> > I found some helpful information while testing TRAs:
>> >
>> > For our use-case I am hesitant to set up an autoDeleteAge (unless it
>> can be
>> > modified - still need to test).  So I wondered about a little more
>> manual
>> > delete management approach.
>> >
>> > I confirmed that I cannot simply delete a collection that is registered
>> as
>> > part of a TRA.  The delete collection api call will fail with a message
>> > that the collection is a part of the alias.
>> >
>> > I did learn that I could use the same create TRA api call I used to
>> create
>> > the TRA, but modify the router.start to date more recent than one or
>> more
>> > of the older collections associated with the TRA. Then when I queried
>> the
>> > TRA, I only received documents from the collections after the new
>> > router.start date. Also, I was now able to successfully delete the older
>> > collections with a standard collection delete command.
>> >
>> > I think this satisfies my initial use-case requirements to be able to
>> > modify an existing TRA and delete older collections.
>> >
>> > Matt
>> >
>> > On Mon, Aug 9, 2021 at 11:27 AM Matt Kuiper <kuipe...@gmail.com> wrote:
>> >
>> > > Hi Gus, Jan,
>> > >
>> > > I am considering implementing TRA for a large-scale Solr deployment.
>> > Your
>> > > Q&A is helpful!
>> > >
>> > > I am curious if you have experience/ideas regarding modifying the TR
>> > Alias
>> > > when one desires to manually delete old collections or modify the
>> > > router.autoDeleteAge to shorten or extend the delete age.  Here's a
>> few
>> > > specific questions?
>> > >
>> > > 1) Can you manually delete an old collection (via collection api) and
>> > then
>> > > edit the start date (to a more recent date) of the TRA so that it no
>> > longer
>> > > sees/processes the deleted collection?
>> > > 2) Is the only way to manage the deletion of collections within a TRA
>> > > using the automatic deletion configuration? The router.autoDeleteAge
>> > > parameter.
>> > > 3) If you can only manage deletes using the router.autoDeleteAge
>> > > parameter, are you able to update this parameter to either:
>> > >
>> > >    - Set the delete age earlier so that older collections are
>> triggered
>> > >    for automatic deletion sooner?
>> > >    - Set the delete age to a larger value to extend the life of a
>> > >    collection?  Say you originally  would like the collections to stay
>> > around
>> > >    for 5 years, but then change your mind to 7 years.
>> > >
>> > > I will likely do some experimentation, but am interested to learn if
>> you
>> > > have covered these use-cases with TRA.
>> > >
>> > > Thanks,
>> > > Matt
>> > >
>> > >
>> > > On Fri, Aug 6, 2021 at 8:08 AM Gus Heck <gus.h...@gmail.com> wrote:
>> > >
>> > >> Hi Jan,
>> > >>
>> > >> The key thing to remember about TRA's (or any Routed Alias) is that
>> it
>> > >> only
>> > >> actively does two things:
>> > >> 1) Routes document updates to the correct collection by inspecting
>> the
>> > >> routed field in the document
>> > >> 2) Detects when a new collection is required and creates it.
>> > >>
>> > >> If you don't send it data *nothing* happens. The collections are not
>> > >> created until data requires them (with an async create possible when
>> it
>> > >> sees an update that has a timestamp "near" the next interval, see
>> docs
>> > for
>> > >> router.preemptiveCreateMath )
>> > >>
>> > >> A) Dave's half of our talk at 2018 activate talks about it:
>> > >> https://youtu.be/RB1-7Y5NQeI?t=839
>> > >> B) Time Routed Aliases are a means by which to automate creation of
>> > >> collections and route documents to the created collections. Sizing,
>> and
>> > >> performance of the individual collections is not otherwise special,
>> and
>> > >> you
>> > >> can interact with the collections individually after they are
>> created,
>> > >> with
>> > >> the obvious caveats that you probably don't want to be doing things
>> that
>> > >> get them out of sync schema wise unless your client programs know
>> how to
>> > >> handle documents of both types etc. A less obvious consequence of the
>> > >> routing is that your data must not ever republish the same document
>> > with a
>> > >> different route key (date for TRA), since that can lead to duplicate
>> > id's
>> > >> across collections. The "normal" use case is event data, things that
>> > >> happened and are done, and are correctly recorded (or at least their
>> > time
>> > >> is correctly recorded) the first time
>> > >> C) Configure the higher number of replicas, remove old ones manually
>> if
>> > >> not
>> > >> needed. At query time it's "just an alias". Managing collections
>> based
>> > on
>> > >> recency could be automated here, before autoscaling was deprecated I
>> was
>> > >> thinking that adding a couple of hooks into autoscaling such that it
>> > could
>> > >> react to collection creation by a TRA specifically would get us to a
>> > place
>> > >> much like Elastic's Hot/Warm architecture. I haven't kept track of
>> > what's
>> > >> being done to replace auto scaling however. I think Atri was
>> interested
>> > in
>> > >> that at one point as well.
>> > >> D) TRA's create collections under the hood with a CREATE command just
>> > like
>> > >> you would manually (based on the config in the TRA). Anything in Solr
>> > that
>> > >> would influence that placement should apply.
>> > >> E) See D above, for fill rate, Utilizing new nodes over time should
>> be
>> > as
>> > >> simple as adding new nodes and waiting for new collections to be
>> > created.
>> > >> One could also manually move replicas as with any other collection,
>> > >> (aside:
>> > >> be sure to refer to a current version of MOVEREPLICA docs, prior to
>> > >> something like 8.6 they were incomplete and even wrong in a few
>> places).
>> > >> F) If you are talking about router.autoDeleteAge here, old collection
>> > >> removal is a regular DELETE (just automatically issued), Not sure
>> what
>> > you
>> > >> mean by rotation interval.
>> > >> G) They are just collections with special names that can be parsed
>> > during
>> > >> update to select a destination for the incoming document.
>> > >> H) They are just collections, and there's nothing to prevent you from
>> > >> upgrading the schema, and new collections will begin using that,
>> > >> individual
>> > >> collections would need to be reloaded, non-safe schema changes (in
>> the
>> > >> usual sense) require a re-index as usual. In a cloud environment
>> where
>> > you
>> > >> can temporarily add machines or disk this is not so bad aside from
>> the
>> > >> time
>> > >> to re-index of course. If you are on-prem then plan to have a
>> > significant
>> > >> level of spare disk to handle this case without running yourself into
>> > the
>> > >> danger zone for segment merging.
>> > >> H.2) TRA is just an alias with fancy collection creation (and
>> naming).
>> > >> Once
>> > >> they collections exist, it's just an alias. All the action (at this
>> > point)
>> > >> happens at update. So long as the collection is listed in the TRA in
>> > >> zookeeper in aliases.json ***in the correct, (chronological, desc)
>> > >> order***
>> > >> and the naming of the collection can be parsed by the TRA code you
>> > should
>> > >> be fine. Incoming updates iterate down the list of collections
>> during an
>> > >> update, and stop at the first one where the collection name matches
>> the
>> > >> date in the routing field for the document for a normal TRA the vast
>> > >> majority of updates hit one of the most recent two or three
>> collections.
>> > >> Frequent updates to old data in a TRA with very many time slices (sub
>> > >> collections) might suffer some since this is a simple linear
>> iteration,
>> > >> optimizing that was deferred until it seemed important to someone's
>> less
>> > >> normal use case :).
>> > >>
>> > >>
>> > >>
>> > >> Otherwise it's just an alias of collections with funky looking names
>> > >> (unless someone added something when I wasn't looking ;) ).
>> > >>
>> > >> -Gus
>> > >>
>> > >> On Fri, Aug 6, 2021 at 4:13 AM Jan Høydahl <jan....@cominvent.com>
>> > wrote:
>> > >>
>> > >> > Hi,
>> > >> >
>> > >> > I have never used TRA, but a client of mine is considering it. A
>> few
>> > >> > questions.
>> > >> >
>> > >> > A) Do you have links to talks (slides/video) on the feature? Or
>> blog
>> > >> posts
>> > >> > going into more detail than the RefGuide?
>> > >> > B) For ingestion performance, sharding may make sense. But only for
>> > the
>> > >> > current collection. Have anyone tried merging "static" shards?
>> > >> > C) Is there a trick to have more relicas on recent collections than
>> > old
>> > >> > ones?
>> > >> > D) Is there a way to manage what nodes that get selected for new
>> > >> > collections, or you need to rely on replica placement policies?
>> > >> > E) How do you guys ensure you get a good fill-rate on the nodes,
>> and
>> > >> what
>> > >> > procedure do you use when adding more nodes in the cluster?
>> > >> >     * I.e. do you simply add a few new nodes and let Solr
>> > automatically
>> > >> > place new collections onto those?
>> > >> > F) How many sub-collections/cores do you plan for on a single node?
>> > >> >     * You could try to configure the "rotation interval" such that
>> a
>> > >> node
>> > >> > gets filled by a single core, but that seems hard to predict
>> > >> >     * Having a too rapid "rotation interval" will leave behind too
>> > many
>> > >> > cores per node, causing inefficiencies?
>> > >> >     * Have you found a strategy to balance this? I'd likely try to
>> > plan
>> > >> > for 10 cores per node, and monitor fill-rate such that I (manually)
>> > add
>> > >> > more HW once a threshold is reached.
>> > >> > G) Have anyone tried backup of a TRA? Does it even work, or do you
>> > need
>> > >> to
>> > >> > run the command for each single collection?
>> > >> > H) A typical requirement is to migrate all data from one cluster
>> to a
>> > >> new
>> > >> > cluster on a newer version or with a new schema. Have you tried
>> doing
>> > >> that
>> > >> > with a TRA?
>> > >> >     * Would you need to migrate each sub collection at a time?
>> > >> >     * Will TRA on the new cluster accept that someone "external"
>> adds
>> > >> > collections, and how it is initialized/bootstrapped to fill the
>> > internal
>> > >> > collection registry?
>> > >> >
>> > >> > That's what I could think of before trying the feature. I'm sure
>> there
>> > >> > would be other questions after some trial and error :)
>> > >> >
>> > >> > Jan
>> > >>
>> > >>
>> > >>
>> > >> --
>> > >> http://www.needhamsoftware.com (work)
>> > >> http://www.the111shift.com (play)
>> > >>
>> > >
>> >
>>
>

Reply via email to