Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft - Issue 989 big data support scaling vuu how to abstract vuu interfaces to allow different implementations of key classes by adding features on construction #1018

Draft
wants to merge 25 commits into
base: main
Choose a base branch
from

Conversation

chrisjstevo
Copy link
Contributor

First example of a plugin structure for project.

Copy link

netlify bot commented Nov 26, 2023

Deploy Preview for papaya-valkyrie-395400 canceled.

Name Link
🔨 Latest commit 6a550ff
🔍 Latest deploy log https://app.netlify.com/sites/papaya-valkyrie-395400/deploys/65ae751267b00e0008938968

@chrisjstevo chrisjstevo marked this pull request as draft November 26, 2023 15:07

<dependency>
<groupId>org.finos.vuu</groupId>
<artifactId>order</artifactId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to have 'features' depend on particular 'use-cases' like 'order' or 'price' ?

@rumakt
Copy link
Contributor

rumakt commented Nov 26, 2023

I like the 'feature' and 'plugin' idea. This is very good 1st step towards making vuu a composable project

@naleeha
Copy link
Contributor

naleeha commented Nov 30, 2023

I think this is good for understanding what it could potentially look like with the plugin concept & bootstraping relevant features etc.
I'm not sure about the feature concepts and having factory for each at that level.
I wonder we can make the construction of main concepts a bit simpler by making it less flexible - e.g. you always create a VirtualViewPort from a VirtualDataTable which knows to take in VirtualSort function etc
Ensure we resolve the right implementation at creation using dependency injection

We may want to re-use the implementation in multiple plugin as well. E.g. VirtualDataTable for both Ignite and Hadoop.
If thats the case, would it be better to tie the table creation by table type rather than plugin?
For registering and resolving new types when you add a plugin, maybe we can have a simple DI Container, similar to what you have for features in this
registry.register[DataTableFactory](VirtualDataTableFactory)
registry.resolve[DataTableFactory](type = VirtualDataTable.type)

.addTable(
    TableDef(
      name = BasketTradingTable,
      type = VirtualDataTable,
      columns = Columns.fromNames(InstanceId.string(), BT.BasketId.string())
    ),
    (table, registry) => new BasketTradingProvider(table, registry.Resolve[DataSource](type = IgniteDataSource)),
  )

I think there is still a lot of context im not aware of & normally find things i didnt think of at implementation time. Having a second implementation would help a lot in visualizing the right solution. Would it make sense as next step to have a spike of implementing the Virtual/BigData vuu solution using the ignite & once we have the second example, try and come up with the exact interfaces and how we can wire them up correctly?

import org.finos.vuu.core.table.RowData
import org.finos.vuu.table.virtualized.cache.GuavaRollingRowDataCache

trait RollingCache[KEY, VALUE] {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if 'RollingCache' is the most fortunate name for this trait ? The contract does not suggest anything 'rolling' here ? i.e. it can but does it have to ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, renamed from Rolling to Windowed

@rumakt
Copy link
Contributor

rumakt commented Dec 29, 2023

Good step forward, lets keep the ball rolling.

…first sketch around what a fake big data provider might look like.
… be created based on in mem vs virtualized tables. This commit only contains the framework changes, next commit should contain the virtualized impl.
rumakt and others added 4 commits January 3, 2024 21:59
…ort-scaling-vuu-how-to-abstract-vuu-interfaces-to-allow-different-implementations-of-key-classes-by-adding-features-on-construction
Copy link

linux-foundation-easycla bot commented Jan 4, 2024

CLA Missing ID CLA Not Signed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 📋 Backlog
3 participants