-devlist

If we design by interface properly, it should be relatively easy to offer
both a disk buffering and an always-write implementation right?

On Thu, May 22, 2025 at 12:12 AM Adnan Hemani
<adnan.hem...@snowflake.com.invalid> wrote:

> Hi all,
>
> Thanks for sharing these thoughts. I’m also not completely sure about how
> much we should care about how much slower things will be if we just make a
> trip to the persistence on every write action. However, I’m building this
> feature with the intention of being able to also support read event types
> in the near future, if this is something that the customer is interested in
> enabling using the `CustomOperation` type that is defined in the Events API
> spec. Of course, this would need to be configured by the administrator, as
> maintenance of the persistence is their responsibility.
>
> Given that the Iceberg Events API spec has not yet merged and can still
> see some changes, I’m planning to begin work on the disk buffering now and
> wait for the Events API to finalize before working on the API side of the
> end-to-end implementation.
>
> Best,
> Adnan Hemani
>
> > On May 20, 2025, at 10:30 PM, Michael Collado <collado.m...@gmail.com>
> wrote:
> >
> > That’s super interesting. Glad this is being worked on. Personally, I
> don’t
> > know that the latency for writing events to a persistent storage is
> really
> > all that concerning. Looking at the enum of supported operations, only
> > write operations seem to trigger the event. It’s not like every read
> > request issues a new event. Given that the request latency here is
> > dominated by cloud storage calls, do we really care about one extra call
> to
> > Postgres? Personally, I’d skip the extra complexity of a buffer of any
> kind
> > and just write straight to the persistence store.
> >
> > Mike
> >
> > On Tue, May 20, 2025 at 9:31 AM Yufei Gu <flyrain...@gmail.com <mailto:
> flyrain...@gmail.com>> wrote:
> >
> >> Looks awesome. Thanks for taking the lead! It makes sense to use a
> >> JDBC-backed persistence layer, shared or separate. The optional
> retention
> >> period is a nice safeguard.
> >> I don’t see any blockers on my side. If no one raises major concerns
> this
> >> week, please go ahead and start the implementation. Exciting to see this
> >> coming together!
> >>
> >> Yufei
> >>
> >>
> >> On Tue, May 13, 2025 at 6:37 PM Adnan Hemani
> >> <adnan.hem...@snowflake.com.invalid> wrote:
> >>
> >>> Hi all,
> >>>
> >>> I am raising a proposal to implement the proposed Iceberg REST
> >>> specification for the Events API (doc <
> >>>
> >>
> https://www.google.com/url?q=https://docs.google.com/document/d/1WtIsNGVX75-_MsQIOJhXLAWg6IbplV4-DkLllQEiFT8/edit?pli%3D1%26tab%3Dt.0&source=gmail-imap&ust=1748410327000000&usg=AOvVaw0UNQYKbXoQ2YHVM7J0kB3l
> >>> ,
> >>> GH <
> https://www.google.com/url?q=https://github.com/apache/iceberg/pull/12584/files&source=gmail-imap&ust=1748410327000000&usg=AOvVaw1AvwLK402voAm_j6zy25Mn>).
> It is my
> >>> understanding that this proposal is close and that we will be required
> to
> >>> implement something very close to the current proposal in the near
> >> future.
> >>>
> >>> If Polaris is to implement this API, it will likely need to be through
> a
> >>> Persistence instance that the Polaris server can query instantly, as
> this
> >>> API will not be asynchronous. Please note, this proposal is not to
> >> comment
> >>> on what events we may emit today or in the future - the scope of this
> >>> proposal is solely to discuss how we plan to implement the proposed
> >> Events
> >>> API.
> >>>
> >>> Changes to be made:
> >>>
> >>> Implement Event storage through the Polaris Persistence layer
> >>>
> >>> We will store events in a persistence instance of user’s choice -
> whether
> >>> they would like the events to be part of the same persistence instance
> as
> >>> their Polaris metadata or if they would like for a separate persistence
> >>> instance. Users will provide the persistence instance by configuring a
> >> JDBC
> >>> string on Polaris startup, similarly to the JDBC string we receive
> >>> currently from users for the Polaris metadata.
> >>>
> >>> For concerns regarding scaling of events in the Polaris persistence
> >> layer,
> >>> we can also implement a recommended, optional parameter for an events
> >>> retention period after which Polaris will asynchronously delete records
> >>> older than that time period.
> >>>
> >>> How to Implement Writes to the Polaris Persistence layer
> >>>
> >>> The way to implement the above proposal would be through implementation
> >> of
> >>> the `PolarisEventListener` <
> >>>
> >>
> https://www.google.com/url?q=https://github.com/apache/polaris/blob/main/service/common/src/main/java/org/apache/polaris/service/events/PolarisEventListener.java&source=gmail-imap&ust=1748410327000000&usg=AOvVaw0Z-SY-d50YHPNK38KxhHVk
> >>>
> >>> abstract class. In this implementation, I believe it should not be
> >>> controversial to state that we cannot block on events to be flushed to
> >>> persistence due to latency concerns - and as a result, we have two
> >> options:
> >>> 1) a simple in-memory buffer or 2) a file-based buffer. Both buffers
> >> would
> >>> flush after a certain amount of time after the first non-flushed event
> is
> >>> written. While option 2 offers a better event durability guarantee in
> >> case
> >>> of disaster recovery, it will come at the cost of additional latency to
> >>> write to the filesystem. If there are no security concerns regarding
> >>> writing to the filesystem, I believe this is the recommended way to
> >>> implement - the additional latency to write to filesystem should not
> add
> >>> unreasonable overhead given the right implementation with open
> >> filewriters.
> >>> If writing to the filesystem is not recommended, I’m not sure there is
> >> any
> >>> other way to achieve guaranteed event durability. In both options we
> can
> >>> only achieve eventual consistency - to get strong consistency, we will
> >> need
> >>> to implement a way to block the API call until we flush the events to
> >>> persistence, which I cannot recommend at this time due to latency
> >> concerns.
> >>>
> >>> Please reply to this thread if there are any questions and/or concerns
> on
> >>> this proposal. If there are no major concerns within a week, then I
> will
> >>> begin implementation.
> >>>
> >>> Best,
> >>> Adnan Hemani
>
>

Reply via email to