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

Big Data Support - Scaling Vuu - How to abstract Vuu interfaces to allow different implementations of key classes by adding "features" on construction. #989

Open
chrisjstevo opened this issue Nov 21, 2023 Discussed in #971 · 0 comments · May be fixed by #1018
Assignees
Labels
Bigdata enhancement New feature or request server

Comments

@chrisjstevo
Copy link
Contributor

Discussed in #971

Originally posted by chrisjstevo November 15, 2023

Introduction

Vuu is currently a largely in memory, near caching solution for UIs. In order to allow Vuu to scale to large data sets (10bn rows) we cannot cache all the data in memory, we need to be able to use big data stores, and move a remote cursor around in that data set as users scroll.

In order to facilitate this requirement we have started to think about Vuu rather than as a deeply entwined 'core' library, but more as a series of internal interfaces. Some examples of these interfaces are:

DataTable
ViewPort
ViewPortKeys() //work in progress
Provider
JoinManager
LoginValidator
Authenticator

If we take the first 5 interfaces, these relate to how we store and join data in memory. When we move to a paradigm where all the data is not in memory, but simply a window of the data is in memory, we will need to provide different implementations of these interfaces to facilitate this.

Features & Plugins

Features, as described here, are a way of grouping alternative implementations to some or all of the above interfaces with non standard implementations. For example, we may want to have the situation where we want to back Tables and Viewports by a Big Data store. In this case we would want to have some construct, conceptually like below, where a user could "plugin" a different implementation to use.

Example:

  //in a normal config object
  val config = VuuServerConfig(
    VuuHttp2ServerOptions()
      //only specify webroot if we want to load the source locally, we'll load it from the jar
     //</snip>
    VuuSecurityOptions()
      .withAuthenticator(authenticator)
      .withLoginValidator(new AlwaysHappyLoginValidator),
    VuuThreadingOptions()
      .withViewPortThreads(4)
      .withTreeThreads(4)
  ).withModule(PriceModule())
    .withModule(BasketModule())
    //add big data plugin 
    withPlugin(BigDataTableAndViewportPlugin())

We would then have a plugin type, that would allow the provision of some or all of these interfaces:

class BigDataTableAndViewportPlugin{
     
         registerFeature[DataTable](BigDataTableFeature())
         registerFeature[JoinManager](BigDataJoinManagerFeature())
}
@chrisjstevo chrisjstevo added enhancement New feature or request server Bigdata labels Nov 21, 2023
@chrisjstevo chrisjstevo self-assigned this Nov 24, 2023
chrisjstevo added a commit that referenced this issue Dec 28, 2023
…nd all tests in vuu pass, but there is a problem with ignite module tests.
chrisjstevo added a commit that referenced this issue Dec 29, 2023
chrisjstevo added a commit that referenced this issue Dec 29, 2023
chrisjstevo added a commit that referenced this issue Dec 29, 2023
…first sketch around what a fake big data provider might look like.
chrisjstevo added a commit that referenced this issue Dec 29, 2023
@keikeicheung keikeicheung moved this to 🏗 In progress in Vuu board Jan 2, 2024
chrisjstevo added a commit that referenced this issue Jan 2, 2024
… be created based on in mem vs virtualized tables. This commit only contains the framework changes, next commit should contain the virtualized impl.
chrisjstevo added a commit that referenced this issue Jan 4, 2024
chrisjstevo added a commit that referenced this issue Jan 4, 2024
SVC-GL-OS-SYNC pushed a commit to UBS-IB/vuu that referenced this issue Jan 23, 2024
SVC-GL-OS-SYNC pushed a commit to UBS-IB/vuu that referenced this issue Jan 23, 2024
SVC-GL-OS-SYNC pushed a commit to UBS-IB/vuu that referenced this issue Jan 23, 2024
SVC-GL-OS-SYNC pushed a commit to UBS-IB/vuu that referenced this issue Jan 23, 2024
…ing and all tests in vuu pass, but there is a problem with ignite module tests.
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 13, 2024
rumakt pushed a commit to rumakt/vuu that referenced this issue Feb 15, 2024
naleeha added a commit to naleeha/vuu that referenced this issue Feb 16, 2024
chrisjstevo pushed a commit that referenced this issue Feb 16, 2024
chrisjstevo pushed a commit that referenced this issue Feb 16, 2024
chrisjstevo pushed a commit that referenced this issue Feb 16, 2024
chrisjstevo pushed a commit that referenced this issue Feb 16, 2024
@naleeha naleeha moved this from 🏗 In progress to 📋 Backlog in Vuu board May 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bigdata enhancement New feature or request server
Projects
Status: 📋 Backlog
1 participant