Hi Mikhail,

On 12/17/19 10:43 AM, Mikhail Gryzykhin wrote:
inline

On Tue, Dec 17, 2019 at 12:59 AM Jan Lukavský <je...@seznam.cz <mailto:je...@seznam.cz>> wrote:

    Hi,

    I actually thought that the proposal refers to Dataflow only. If
    this is supposed to be general, can we remove the
    Dataflow/Windmill specific parts and replace them with generic ones?

 I'll look into rephrasing doc to keep Dataflow/Windmill as example.
Cool, thanks!

    I'd have two more questions:

     a) the proposal is named "Slowly changing", why is the rate of
    change essential to the proposal? Once running on event time, that
    should not matter, or what am I missing?

Within this proposal, it is suggested to make a full snapshot of data on every re-read. This is generally expensive and setting time event to short interval might cause issues. Otherwise it is not essential.
Understood. This relates to table-stream duality, where the requirements might relax once you don't have to convert table to stream by re-reading it, but by being able to retrieve updates as you go (example would be reading directly from kafka or any other "commit log" abstraction).

     b) The description says: 'User wants to solve a stream enrichment
    problem. In brief request sounds like: ”I want to enrich each
    event in this stream by corresponding data from given table.”'.
    That is understandable, but would it be better to enable the user
    to express this intent directly (via Join operation)? The actual
    implementation might be runner (and input!) specific. The analogy
    is that when doing group-by-key operation, runner can choose hash
    grouping or sort-merge grouping, but that is not (directly)
    expressed in user code. I'm not saying that we should not have
    low-level transforms, just asking if it would be better to leave
    this decision to the runner (at least in some cases). It might be
    the case that we want to make core SDK as low level as possible
    (and as reasonable), I just want to make sure that that is really
    the intent.

The idea is to add basic operation with as small change as possible for current API. Ultimate goal is to have a Join/GBK operator that will choose proper strategy. However, I don't think that we have proper tools and view of how to choose best strategy at hand as of yet.

OK, cool. That is where I would find it very much useful to have some sort of "goals", that we are targeting. I agree that there are some pieces missing in the puzzle as of now. But it would be good to know what these pieces are and what needs to be done to fulfill our goals. But this is probably not related to discussion of this proposal, but more related to the concept of BIP or similar.

Thanks for the explanation.

    Thanks for the proposal!

    Jan

    On 12/17/19 12:01 AM, Kenneth Knowles wrote:
    I want to highlight that this design works for definitely more
    runners than just Dataflow. I see two pieces of it that I want to
    bring onto the thread:

    1. A new kind of "unbounded source" which is a periodic refresh
    of a bounded source, and use that as a side input. Each main
    input element has a window that maps to a specific refresh of the
    side input.
    2. Distributed map side inputs: supporting very large lookup
    tables, but with consistency challenges. Even the part about
    "windmill API" probably applies to other runners

    So I hope the title and "Objective" section do not cause people
    to stop reading.

    Kenn

    On Mon, Dec 16, 2019 at 11:36 AM Mikhail Gryzykhin
    <mig...@google.com <mailto:mig...@google.com>> wrote:

        +some people explicitly

        Can you please check on the doc and comment if it looks fine?

        Thank you,
        --Mikhail

        On Tue, Dec 10, 2019 at 1:43 PM Mikhail Gryzykhin
        <mig...@google.com <mailto:mig...@google.com>> wrote:

            "Good news, everyone-"
            ―Farnsworth

            Hi everyone,

            Recently, I was looking into relaxing limitations on side
            inputs in Dataflow runner. As part of it, I came up with
            design proposal for standardizing slowly changing
            dimensions use case in Beam and relevant changes to add
            support for distributed map side inputs.

            Please review and comment on design doc.
            
<https://docs.google.com/document/d/1LDY_CtsOJ8Y_zNv1QtkP6AGFrtzkj1q5EW_gSChOIvg>
 [1]

            Thank you,
            Mikhail.

            -----

            [1]
            
https://docs.google.com/document/d/1LDY_CtsOJ8Y_zNv1QtkP6AGFrtzkj1q5EW_gSChOIvg

Reply via email to