Jingsong, regarding the LogStore abstraction, I understand that you want to retain some flexibility as the implementation evolves. It makes sense that the abstract interfaces would be @Internal for now. Would you kindly ensure the minimal extensibility is in place, so that the Pulsar dev community may hack on a prototype implementation?
I believe this is important for maintaining the perception that Flink doesn't unduly favor Kafka. -Eron On Tue, Nov 9, 2021 at 6:53 PM Jingsong Li <jingsongl...@gmail.com> wrote: > Hi all, > > I have started the voting thread [1]. Please cast your vote there or > ask additional questions here. > > [1] https://lists.apache.org/thread/v3fzx0p6n2jogn86sptzr30kr3yw37sq > > Best, > Jingsong > > On Mon, Nov 1, 2021 at 5:41 PM Jingsong Li <jingsongl...@gmail.com> wrote: > > > > Hi Till, > > > > Thanks for your suggestion. > > > > At present, we do not want users to use other storage implementations, > > which will undoubtedly require us to propose interfaces and APIs with > > compatibility guarantee, which will complicate our design. And some > > designs are constantly changing, we will constantly adjust according > > to the needs of end users. > > > > However, this does not prevent us from proposing some internal > > interfaces, such as ManagedTableStorageProvider you said, which can > > make our code more robust and testable. However, these interfaces will > > not be public, which means that we have no compatibility burden. > > > > Best, > > Jingsong > > > > On Mon, Nov 1, 2021 at 3:57 PM Till Rohrmann <trohrm...@apache.org> > wrote: > > > > > > Hi Kurt, > > > > > > Thanks a lot for the detailed explanation. I do see that implementing > this > > > feature outside of Flink will be a bigger effort because we probably > have > > > to think more about the exact interfaces and contracts. On the other > hand, > > > I can also imagine that users might want to use different storage > > > implementations (e.g. Pulsar instead of Kafka for the changelog > storage) at > > > some point. > > > > > > Starting with a feature branch and keeping this question in mind is > > > probably a good compromise. Getting this feature off the ground in > order to > > > evaluate it with users is likely more important than thinking of all > > > possible storage implementations and how to arrange the code. In case > we > > > should split it, maybe we need something like a > ManagedTableStorageProvider > > > that encapsulates the logic where to store the managed tables. > > > > > > Looking forward to this feature and the improvements it will add to > Flink's > > > SQL usability :-) > > > > > > Cheers, > > > Till > > > > > > On Mon, Nov 1, 2021 at 2:46 AM Kurt Young <ykt...@gmail.com> wrote: > > > > > > > Hi Till, > > > > > > > > We have discussed the possibility of putting this FLIP into another > > > > repository offline > > > > with Stephan and Timo. This looks similar with another under going > effort > > > > which trying > > > > to put all connectors outside the Flink core repository. > > > > > > > > From the motivation and scope of this FLIP, it's quite different from > > > > current connectors in > > > > some aspects. What we are trying to offer is some kind of built-in > storage, > > > > or we can call it > > > > internal/managed tables, compared with current connectors, they kind > of > > > > express external > > > > tables of Flink SQL. Functionality-wise, this managed table would > have more > > > > ability than > > > > all these connectors, since we controlled the implementation of such > > > > storage. Thus this table > > > > storage will interact with lots SQL components, like metadata > handling, > > > > optimization, execution, > > > > etc. > > > > > > > > However we do see some potential benefits if we choose to put it > outside > > > > Flink: > > > > - We may achieve more rapid development speed and maybe more frequent > > > > release. > > > > - Force us to think really clearly about the interfaces it should be, > > > > because we don't have > > > > the shortcut to modify core & connector codes all at the same time. > > > > > > > > But we also can't ignore the overhead: > > > > - We almost need everything that is discussed in the splitting > connectors > > > > thread. > > > > - We have to create lots more interface than TableSource/TableSink > to make > > > > it just work at the first > > > > place, e.g. interfaces to express such tables should be managed by > Flink, > > > > interfaces to express the > > > > physical capability of the storage then it can be bridged to SQL > optimizer > > > > and executor. > > > > - If we create lots of interfaces with only one implementation, that > sounds > > > > overengineering to me. > > > > > > > > Combining the pros and cons above, what we are trying to do is > firstly > > > > implement it in a feature branch, > > > > and also keep good engineering and design in mind. At some point we > > > > re-evaluate the decision whether > > > > to put it inside or outside the Flink core. What do you think? > > > > > > > > Best, > > > > Kurt > > > > > > > > > > > > On Fri, Oct 29, 2021 at 11:53 PM Till Rohrmann <trohrm...@apache.org > > > > > > wrote: > > > > > > > > > Hi Jingsong, > > > > > > > > > > Thanks for creating this FLIP. I don't have a lot to add because I > am not > > > > > very familiar with the SQL components. While reading the FLIP I was > > > > > wondering what would we need in Flink to build something like the > BDT > > > > > feature outside of Flink as a kind of extension? Would something > like > > > > this > > > > > be possible? Maybe the answer is a quick no ;-) > > > > > > > > > > Cheers, > > > > > Till > > > > > > > > > > On Thu, Oct 28, 2021 at 8:06 AM Jingsong Li < > jingsongl...@gmail.com> > > > > > wrote: > > > > > > > > > > > Hi all, > > > > > > > > > > > > I updated FLIP based on your feedback: > > > > > > > > > > > > 1. Introduce interfaces: GenericCatalog, ManagedTableFactory, > > > > > > TableDescriptor.forManaged > > > > > > > > > > > > 2. Introduce log.scan.startup.mode (default initial) to Hybrid > source. > > > > > > > > > > > > 3. Add description to miss dropped table. > > > > > > > > > > > > Best, > > > > > > Jingsong > > > > > > > > > > > > On Mon, Oct 25, 2021 at 3:39 PM Jingsong Li < > jingsongl...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > > Hi Ingo, > > > > > > > > > > > > > > Really appreciate your feedback. > > > > > > > > > > > > > > #1. The reason why we insist on using no "connector" option is > that > > > > we > > > > > > > want to bring the following design to users: > > > > > > > - With the "connector" option, it is a mapping, unmanaged > table. > > > > > > > - Without the "connector" option, it is a managed table. It > may be an > > > > > > > Iceberg managed table, or may be a JDBC managed table, or may > be a > > > > > > > Flink managed table. > > > > > > > > > > > > > > #2. About: > > > > > > > CREATE TABLE T (f0 INT); > > > > > > > ALTER TABLE T SET ('connector' = '…'); > > > > > > > > > > > > > > I think it is dangerous, even for a generic table. The managed > table > > > > > > > should prohibit it. > > > > > > > > > > > > > > #3. DDL and Table API > > > > > > > > > > > > > > You are right, Table Api should be a superset of SQL. There is > no > > > > > > > doubt that it should support BDT. > > > > > > > > > > > > > > Best, > > > > > > > Jingsong > > > > > > > > > > > > > > On Mon, Oct 25, 2021 at 2:18 PM Ingo Bürk <i...@ververica.com> > > > > wrote: > > > > > > > > > > > > > > > > Hi Jingsong, > > > > > > > > > > > > > > > > thanks again for the answers. I think requiring catalogs to > > > > implement > > > > > > an > > > > > > > > interface to support BDTs is something we'll need (though > > > > personally > > > > > I > > > > > > > > still prefer explicit DDL here over the "no connector option" > > > > > > approach). > > > > > > > > > > > > > > > > What about more edge cases like > > > > > > > > > > > > > > > > CREATE TABLE T (f0 INT); > > > > > > > > ALTER TABLE T SET ('connector' = '…'); > > > > > > > > > > > > > > > > This would have to first create the physical storage and then > > > > delete > > > > > it > > > > > > > > again, right? > > > > > > > > > > > > > > > > On a separate note, he FLIP currently only discusses SQL > DDL, and > > > > you > > > > > > have > > > > > > > > also mentioned > > > > > > > > > > > > > > > > > BDT only can be dropped by Flink SQL DDL now. > > > > > > > > > > > > > > > > Something Flink suffers from a lot is inconsistencies across > APIs. > > > > I > > > > > > think > > > > > > > > it is important that we support features on all major APIs, > i.e. > > > > > > including > > > > > > > > Table API. > > > > > > > > For example for creating a BDT this would mean e.g. adding > > > > something > > > > > > like > > > > > > > > #forManaged(…) to TableDescriptor. > > > > > > > > > > > > > > > > > > > > > > > > Best > > > > > > > > Ingo > > > > > > > > > > > > > > > > On Mon, Oct 25, 2021 at 5:27 AM Jingsong Li < > > > > jingsongl...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > > > > > Hi Ingo, > > > > > > > > > > > > > > > > > > I thought again. > > > > > > > > > > > > > > > > > > I'll try to sort out the current catalog behaviors. > > > > > > > > > Actually, we can divide catalogs into three categories: > > > > > > > > > > > > > > > > > > 1. ExternalCatalog: it can only read or create a single > table > > > > kind > > > > > > > > > which connects to external storage. TableFactory is > provided by > > > > > > > > > Catalog, which can have nothing to do with Flink's Factory > > > > > discovery > > > > > > > > > mechanism, such as IcebergCatalog, JdbcCatalog, > PostgresCatalog, > > > > > etc. > > > > > > > > > Catalog manages the life cycle of its **managed** tables, > which > > > > > means > > > > > > > > > that creation and drop will affect the real physical > storage. The > > > > > DDL > > > > > > > > > has no "connector" option. > > > > > > > > > > > > > > > > > > 2. GenericCatalog (or FlinkCatalog): only Flink tables are > saved > > > > > and > > > > > > > > > factories are created through Flink's factory discovery > > > > mechanism. > > > > > At > > > > > > > > > this time, the catalog is actually only a storage medium > for > > > > saving > > > > > > > > > schema and options, such as GenericInMemoryCatalog. > Catalog only > > > > > > saves > > > > > > > > > meta information and does not manage the underlying > physical > > > > > storage > > > > > > > > > of tables. These tables are **unmanaged**. The DDL must > have a > > > > > > > > > "connector" option. > > > > > > > > > > > > > > > > > > 3. HybridCatalog: It can save both its own **managed** > table and > > > > > > > > > generic Flink **unmanaged** table, such as HiveCatalog. > > > > > > > > > > > > > > > > > > We want to use the "connector" option to distinguish > whether it > > > > is > > > > > > > > > managed or not. > > > > > > > > > > > > > > > > > > Now, consider the Flink managed table in this FLIP. > > > > > > > > > a. ExternalCatalog can not support Flink managed tables. > > > > > > > > > b. GenericCatalog can support Flink managed tables without > the > > > > > > > > > "connector" option. > > > > > > > > > c. What about HybridCatalog (HiveCatalog)? Yes, we want > > > > HiveCatalog > > > > > > to > > > > > > > > > support Flink managed tables: > > > > > > > > > - with "connector" option in Flink dialect is unmanaged > tables > > > > > > > > > - Hive DDL in Hive dialect is Hive managed tables, the > parser > > > > will > > > > > > add > > > > > > > > > "connector = hive" automatically. At present, there are > many > > > > > > > > > differences between Flink DDL and Hive DDL, and even their > > > > features > > > > > > > > > have many differences. > > > > > > > > > - without "connector" option in Flink dialect is Flink > managed > > > > > > tables. > > > > > > > > > > > > > > > > > > In this way, we can support Flink managed tables while > > > > maintaining > > > > > > > > > compatibility. > > > > > > > > > > > > > > > > > > Anyway, we need introduce a "SupportsFlinkManagedTable" to > > > > catalog. > > > > > > > > > > > > > > > > > > ############## Back to your question ################# > > > > > > > > > > > > > > > > > > > but we should make it clear that this is a limitation and > > > > > probably > > > > > > > > > document how users can clean up the underlying physical > storage > > > > > > manually in > > > > > > > > > this case > > > > > > > > > > > > > > > > > > Yes, it's strange that the catalog should manage tables, > but some > > > > > > > > > catalogs don't have this ability. > > > > > > > > > - For PersistentCatalog, the meta will continue until the > > > > > underlying > > > > > > > > > physical storage is deleted. > > > > > > > > > - For InMemoryCatalog, yes, we should document it for the > > > > > underlying > > > > > > > > > physical storage of Flink managed tables. > > > > > > > > > > > > > > > > > > > the HiveCatalog doesn't list a 'connector' option for its > > > > tables. > > > > > > > > > > > > > > > > > > Actually, It can be divided into two steps: create and > save: > > > > > > > > > - When creating a table, the table seen by HiveCatalog > must have > > > > > > > > > "connector = hive", which is the hive table (Hive managed > table). > > > > > You > > > > > > > > > can see the "HiveCatalog.isHiveTable". > > > > > > > > > - When saving the table, it will remove the connector of > the hive > > > > > > > > > table. We can do this: with "connector" option is Flink > generic > > > > > > table, > > > > > > > > > without "connector" option is Hive table, with > "flink-managed = > > > > > true" > > > > > > > > > is Flink managed table. > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > Jingsong Lee > > > > > > > > > > > > > > > > > > On Thu, Oct 21, 2021 at 8:23 PM Ingo Bürk < > i...@ververica.com> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > Hi JingSong, > > > > > > > > > > > > > > > > > > > > thank you for the answers! > > > > > > > > > > > > > > > > > > > > > BDT only can be dropped by Flink SQL DDL now. > > > > > > > > > > > > > > > > > > > > Maybe I'm misunderstanding, but that's only true from > the Flink > > > > > > side. > > > > > > > > > What > > > > > > > > > > I meant is that a table could disappear from a catalog > entirely > > > > > > outside > > > > > > > > > of > > > > > > > > > > Flink. As a simple example, consider a catalog which > represents > > > > > an > > > > > > IMAP > > > > > > > > > > mail server and each folder as a table. If a folder is > deleted > > > > > > from the > > > > > > > > > > mail account, the table would disappear, but Flink would > have > > > > no > > > > > > way of > > > > > > > > > > knowing that. I don't see a way around this problem, to > be > > > > > honest, > > > > > > but we > > > > > > > > > > should make it clear that this is a limitation and > probably > > > > > > document how > > > > > > > > > > users can clean up the underlying physical storage > manually in > > > > > > this case? > > > > > > > > > > > > > > > > > > > > > - Option 1: Create table without the connector option, > the > > > > > table > > > > > > will > > > > > > > > > > > be forcibly translated to BDT. > > > > > > > > > > > > > > > > > > > > This would be a breaking change, right? If I remember > correctly > > > > > > (but I > > > > > > > > > > might not :-)), even the HiveCatalog doesn't list a > 'connector' > > > > > > option > > > > > > > > > for > > > > > > > > > > its tables. > > > > > > > > > > > > > > > > > > > > This approach is also very implicit, and creating > physical > > > > > storage > > > > > > isn't > > > > > > > > > > exactly "free", so I personally would favor one of the > other > > > > > > approaches. > > > > > > > > > > Option (2) would be explicit for the end user, while > Option (3) > > > > > is > > > > > > again > > > > > > > > > > implicit for the user and only explicit for the catalog > > > > > > implementor, so I > > > > > > > > > > kind of favor Option (2) because I feel that users > should be > > > > > aware > > > > > > of > > > > > > > > > > creating a Flink-managed table. > > > > > > > > > > > > > > > > > > > > We also need to consider the upgrade path here: if a > catalog > > > > > > exposes > > > > > > > > > tables > > > > > > > > > > without 'connector' options today, we need to make sure > that > > > > once > > > > > > this > > > > > > > > > FLIP > > > > > > > > > > is implemented no errors are thrown because codepaths > assume > > > > that > > > > > > > > > physical > > > > > > > > > > storage must exist for such tables (since they were > created > > > > > before > > > > > > the > > > > > > > > > > FLIP). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Best > > > > > > > > > > Ingo > > > > > > > > > > > > > > > > > > > > On Thu, Oct 21, 2021 at 1:31 PM Jingsong Li < > > > > > > jingsongl...@gmail.com> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Hi Ingo and wenlong, > > > > > > > > > > > > > > > > > > > > > > Thanks for your feedback. Very good questions! > > > > > > > > > > > > > > > > > > > > > > (Built-in Dynamic Table is simplified as BDT) > > > > > > > > > > > > > > > > > > > > > > First, let's look at the following questions: > > > > > > > > > > > > > > > > > > > > > > 1. Does BDT want a separate catalog or can it be > placed in > > > > all > > > > > > > > > > > catalogs (such as InMemoryCatalog and HiveCatalog)? > > > > > > > > > > > - BDT wants the latter. Because in iceberg, we have > seen > > > > that > > > > > a > > > > > > > > > > > separate catalog undoubtedly needs to recreate a set of > > > > > > catalogs. We > > > > > > > > > > > often don't know whether it is Flink's HiveCatalog or > > > > iceberg's > > > > > > > > > > > HiveCatalog. This brings not only duplication of work, > but > > > > also > > > > > > > > > > > confusion. > > > > > > > > > > > - How does catalog persist BDT? As a general Flink > table, > > > > > > persist the > > > > > > > > > > > schema and options of the table. > > > > > > > > > > > > > > > > > > > > > > 2. Is Flink's DDL mapping or real physical storage? > > > > > > > > > > > - Mapping: creating and dropping tables only change the > > > > mapping > > > > > > > > > > > relationship, > > > > > > > > > > > - Physical storage: creating and dropping tables will > > > > actually > > > > > > delete > > > > > > > > > > > the underlying storage > > > > > > > > > > > - Status quo: the general connectors are all mapping, > while > > > > the > > > > > > self > > > > > > > > > > > managed tables of Catalog are real storage. > > > > > > > > > > > - BDT wants real physical storage, because it can > provide > > > > > > database > > > > > > > > > > > level experience, and BDT wants to be orthogonal to > catalog. > > > > > > > > > > > Therefore, BDT is bound to break the current situation > and > > > > > > become a > > > > > > > > > > > new concept. > > > > > > > > > > > > > > > > > > > > > > Based on the above conclusion, let's look at your > question. > > > > > > > > > > > > > > > > > > > > > > To Ingo: > > > > > > > > > > > > > > > > > > > > > > > if tables are dropped externally rather than through > Flink > > > > > SQL > > > > > > DDL, > > > > > > > > > how > > > > > > > > > > > would Flink be able to remove the physical storage for > it. > > > > > > > > > > > > > > > > > > > > > > BDT only can be dropped by Flink SQL DDL now. > > > > > > > > > > > > > > > > > > > > > > To wenlong: > > > > > > > > > > > > > > > > > > > > > > > How the built-in table would be persisted in Catalog? > > > > > > > > > > > > > > > > > > > > > > Just like a general Flink table, persist the schema and > > > > options > > > > > > of the > > > > > > > > > > > table. > > > > > > > > > > > > > > > > > > > > > > > Is it possible to read historical data from the file > store > > > > > > first and > > > > > > > > > > > then fetch new changes from the log store? something > like a > > > > > > hybrid > > > > > > > > > source, > > > > > > > > > > > but I think we need a mechanism to get exactly-once > semantic. > > > > > > > > > > > > > > > > > > > > > > This can be implemented, but we need to save the Kafka > offset > > > > > of > > > > > > the > > > > > > > > > > > current checkpoint in the snapshot, so that we can > accurately > > > > > > switch > > > > > > > > > > > between file and log. But this is not in MVP. > > > > > > > > > > > > > > > > > > > > > > To Ingo and wenlong: > > > > > > > > > > > > > > > > > > > > > > > Currently a catalog can provide a default table > factory and > > > > > > would be > > > > > > > > > > > used as the top priority factory, what would happen > after the > > > > > > default > > > > > > > > > > > factory was introduced. > > > > > > > > > > > > > > > > > > > > > > - Option 1: Create table without the connector option, > the > > > > > table > > > > > > will > > > > > > > > > > > be forcibly translated to BDT. > > > > > > > > > > > - Option 2: Introduce new grammar, for example, "CREATE > > > > MANAGED > > > > > > > > > > > TABLE...", this will separate from the default table of > > > > > catalog. > > > > > > > > > > > Catalog can define its own managed tables. > > > > > > > > > > > - Option 3: Create table without the connector option, > but > > > > > > introduce > > > > > > > > > > > interface to Catalog, for example, > > > > "SupportsFlinkManagedTable". > > > > > > The > > > > > > > > > > > catalog that can support BDT can implement > > > > > > > > > > > it.(InMemoryCatalog,HiveCatalog). Catalogs that do not > > > > support > > > > > > BDT can > > > > > > > > > > > implement their own managed tables.(IcebergCatalog, > these > > > > > > catalogs do > > > > > > > > > > > not even support other flink tables) > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > Jingsong > > > > > > > > > > > > > > > > > > > > > > On Thu, Oct 21, 2021 at 11:37 AM wenlong.lwl < > > > > > > wenlong88....@gmail.com> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > Hi Jingsong, thanks for the proposal, providing a > built-in > > > > > > storage > > > > > > > > > > > solution > > > > > > > > > > > > for users will make flink SQL much more easier to > use in > > > > > > production. > > > > > > > > > > > > > > > > > > > > > > > > I have some questions which may be missed in the > FLIP, but > > > > > may > > > > > > be > > > > > > > > > > > important > > > > > > > > > > > > IMO: > > > > > > > > > > > > 1. Is it possible to read historical data from the > file > > > > store > > > > > > first > > > > > > > > > and > > > > > > > > > > > > then fetch new changes from the log store? something > like a > > > > > > hybrid > > > > > > > > > > > source, > > > > > > > > > > > > but I think we need a mechanism to get exactly-once > > > > semantic. > > > > > > > > > > > > 2. How the built-in table would be persisted in > Catalog? > > > > > > > > > > > > 3. Currently a catalog can provide a default table > factory > > > > > and > > > > > > would > > > > > > > > > be > > > > > > > > > > > > used as the top priority factory, what would happen > after > > > > the > > > > > > default > > > > > > > > > > > > factory was introduced. > > > > > > > > > > > > > > > > > > > > > > > > On Wed, 20 Oct 2021 at 19:35, Ingo Bürk < > > > > i...@ververica.com> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > Hi Jingsong, > > > > > > > > > > > > > > > > > > > > > > > > > > thank you for writing up the proposal. The > benefits such > > > > a > > > > > > > > > mechanism > > > > > > > > > > > will > > > > > > > > > > > > > bring will be very valuable! I haven't yet looked > into > > > > this > > > > > > in > > > > > > > > > detail, > > > > > > > > > > > but > > > > > > > > > > > > > one question came to my mind immediately: > > > > > > > > > > > > > > > > > > > > > > > > > > The DDL for these tables seems to rely on there not > > > > being a > > > > > > > > > 'connector' > > > > > > > > > > > > > option. However, catalogs can provide a custom > factory, > > > > and > > > > > > thus > > > > > > > > > tables > > > > > > > > > > > > > don't necessarily need to contain such an option > already > > > > > > today. How > > > > > > > > > > > will > > > > > > > > > > > > > this interact / work with catalogs? I think there > are > > > > more > > > > > > points > > > > > > > > > > > regarding > > > > > > > > > > > > > interaction with catalogs, e.g. if tables are > dropped > > > > > > externally > > > > > > > > > rather > > > > > > > > > > > > > than through Flink SQL DDL, how would Flink be > able to > > > > > > remove the > > > > > > > > > > > physical > > > > > > > > > > > > > storage for it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Best > > > > > > > > > > > > > Ingo > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Oct 20, 2021 at 11:14 AM Jingsong Li < > > > > > > > > > jingsongl...@gmail.com> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Kurt and I propose to introduce built-in storage > > > > support > > > > > > for > > > > > > > > > dynamic > > > > > > > > > > > > > > table, a truly unified changelog & table > > > > representation, > > > > > > from > > > > > > > > > Flink > > > > > > > > > > > > > > SQL’s perspective. We believe this kind of > storage will > > > > > > improve > > > > > > > > > the > > > > > > > > > > > > > > usability a lot. > > > > > > > > > > > > > > > > > > > > > > > > > > > > We want to highlight some characteristics about > this > > > > > > storage: > > > > > > > > > > > > > > > > > > > > > > > > > > > > - It’s a built-in storage for Flink SQL > > > > > > > > > > > > > > ** Improve usability issues > > > > > > > > > > > > > > ** Flink DDL is no longer just a mapping, but a > real > > > > > > creation for > > > > > > > > > > > these > > > > > > > > > > > > > > tables > > > > > > > > > > > > > > ** Masks & abstracts the underlying technical > details, > > > > no > > > > > > > > > annoying > > > > > > > > > > > > > options > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Supports subsecond streaming write & > consumption > > > > > > > > > > > > > > ** It could be backed by a service-oriented > message > > > > queue > > > > > > (Like > > > > > > > > > > > Kafka) > > > > > > > > > > > > > > ** High throughput scan capability > > > > > > > > > > > > > > ** Filesystem with columnar formats would be an > ideal > > > > > > choice just > > > > > > > > > > > like > > > > > > > > > > > > > > iceberg/hudi does. > > > > > > > > > > > > > > > > > > > > > > > > > > > > - More importantly, in order to solve the > cognitive > > > > bar, > > > > > > storage > > > > > > > > > > > needs > > > > > > > > > > > > > > to automatically address various > Insert/Update/Delete > > > > > > inputs and > > > > > > > > > > > table > > > > > > > > > > > > > > definitions > > > > > > > > > > > > > > ** Receive any type of changelog > > > > > > > > > > > > > > ** Table can have primary key or no primary key > > > > > > > > > > > > > > > > > > > > > > > > > > > > Looking forward to your feedback. > > > > > > > > > > > > > > > > > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-188%3A+Introduce+Built-in+Dynamic+Table+Storage > > > > > > > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > Jingsong Lee > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > Best, Jingsong Lee > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > Best, Jingsong Lee > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > Best, Jingsong Lee > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Best, Jingsong Lee > > > > > > > > > > > > > > > > > > > > > > > -- > > Best, Jingsong Lee > > > > -- > Best, Jingsong Lee >