mit-pdos / noria

Fast web applications through dynamic, partially-stateful dataflow
Apache License 2.0
4.98k stars 242 forks source link

Some additional data type #141

Open mitar opened 4 years ago

mitar commented 4 years ago

I would like to request some additional data types:

jonhoo commented 4 years ago

Hi! Given that Noria is a research prototype, we're not really focused on adding additional data types at the moment. I'd be happy to take a look at a PR, but our main attention is on the research aspects of the system, such as sharding, security policies, and fault-tolerance. I'll leave this open for later work though :)

mitar commented 4 years ago

I also prefer that the core team works on those hard problems. :-)

Thank you for being open to PRs though. But to make it clearer what you would like to see in a PR, do you have any preference about compound types? So given a special Noria architecture I am not completely sure what would performer better/be a better design choice:

In some way the default dsign would be the first. But with Noria it might be that the second can perform better, especially with its internal cache/materialization. Where some of those compound values would be constructed and cached as needed, and also freed when not needed.

So do you have any insight here? Or should we support both and see then? In a way supporting both would provide more flexibility to the app developer to structure data as it suits the app the best, while leaving to Noria to optimize that (I think this is of goals of Noria, that app developer does not have to care about optimizing queries and data structures and indices, but that it figures all that out on its own).

jonhoo commented 4 years ago

My first instinct here is also to take the first approach. You're right that Noria might be able to automatically delegate compound types to an operator, but I think that would necessarily have to come after support for "basic" compound types. Basically, once we have compound types, I could then imagine that we'd add operators (like fancy versions of GROUP_CONCAT) which construct and incrementally maintain these compound types.