Thanks for your feedback Mikhail. Your comment makes a lot of sense.

When discussing these (pretty cool) architectures I'm missing the point of
> implementing transaction log in Solr codebase.
> I think Kafka is the best fit for such a pre-indexer buffer. WYDT?


Starting from scratch with a design for such a write ahead log, there
likely are multiple options.
But here we're considering an integration into an existing system
(SolrCloud) that already has existing logic and implementation around
transaction logs and that currently does not have a dependency on Kafka.

I think mandating the use of Kafka to switch to this mode of separating
compute and storage would make adoption harder. One would also need a
deployment of Kafka that is resilient to an AZ going down. We get this "for
free" by using S3/GCS or similar.
Moreover, the transaction log will be per shard but we can't afford a Kafka
topic per shard (in our use case we have thousands of shards on the
cluster). Addressing all this will likely complexify a design that will
lose its initial beauty and appeal.

In any case, work on the transaction log side of things has not started,
and our (Salesforce) plan is to start that work once the existing state of
the separation of compute and storage has been shared upstream (in a
branch). There will be plenty of opportunities to discuss and decide on the
best approach (and work on it if anybody is interested). Maybe even decide
to not decide: use the abstraction internally and allow multiple
implementations: existing local file system, S3/GCS based as suggested,
Kafka or other based.

I hope to be able to present this topic using 5 minutes during the
upcoming community virtual
meetup
<https://cwiki.apache.org/confluence/display/SOLR/2023-07-19+Meeting+notes>
(July
19th).

Ilan


On Wed, Jul 12, 2023 at 10:54 AM Mikhail Khludnev <m...@apache.org> wrote:

> Hello Ilan,
> Late comment, though.
>
> On Fri, Apr 28, 2023 at 8:33 PM Ilan Ginzburg <ilans...@gmail.com> wrote:
>
> > ...
> > We're considering improving this approach by making the transaction log a
> > shard level abstraction (rather than a replica/node abstraction), and
> store
> > it in S3 as well with a transaction log per shard, not per replica.
> > This would allow indexing to not commit on every batch, speed up /update
> > requests, push the constructed segments asynchronously to S3, guarantee
> > data durability while still allowing nodes to be stateless (so can be
> shut
> > down at any time in any number without data loss and without having to
> > restart these nodes to recover data only they can access).
> > ...
> > Thanks,
> > Ilan
> >
>
> When discussing these (pretty cool) architectures I'm missing the point of
> implementing transaction log in Solr codebase.
> I think Kafka is the best fit for such a pre-indexer buffer. WYDT?
>
> --
> Sincerely yours
> Mikhail Khludnev
>

Reply via email to