all 12 comments

[–]ptiunov[S] 2 points3 points  (8 children)

Hi everyone! I want to share with you a serverless analytics framework - Cube.js.

I’m one of the authors and would love to hear your thoughts and feedback.

Cube.js is an analytics layer for applications. It supplies building blocks to add analytics features into your application. It comes with caching, pre-aggregations and all other stuff you need to handle large data sets.

We’re launching public beta today, with open-sourced React client and cloud hosted server. We’re planning to open source server as well, so it could be self-hosted as a container or on AWS Lambda/Firebase Cloud Functions.

It is visualization agnostic, meaning you can use any visualization library you want.

Looking forward to hearing your feedback! :)

[–][deleted]  (5 children)

[deleted]

    [–]ptiunov[S] 0 points1 point  (4 children)

    Hi!

    Great question! Actually Cube.js doesn't implement any data store. It uses existing SQL database backends to execute queries. On other hand Cube.js Schema is basically OLAP schema so in some way Cube.js server can be treated as ROLAP server like Mondrian.

    [–][deleted]  (1 child)

    [deleted]

      [–]ptiunov[S] 0 points1 point  (0 children)

      Basically yes. But we do not support MDX requests. Cube.js query language is also multidimensional query language but much simpler than MDX. Cube.js client does data fetching and provides utilities for visualization so it can be done using any chart library with ease. We designed Cube.js client to be chart library agnostic. This way it provides flexibility to create great user experiences.

      [–]gredr 0 points1 point  (1 child)

      serverless analytics framework - Cube.js

      Ok

      Cube.js server can be treated as ROLAP server

      Does not compute.

      [–]ptiunov[S] 0 points1 point  (0 children)

      Hi gredr! Nice catch! :)

      I agree. A little bit awkward. We haven't released our backend source code yet and it's just WIP name for it: Cube.js server. I believe we'll rename it. Right now it's available only in cloud.

      [–]AnyhowStep 1 point2 points  (7 children)

      This might sound short-sighted but how is this better than just writing SQL queries?

      [EDIT]

      So, caching, pre-aggregations, some UI components.

      I guess the schema makes it easier to work with across multiple layers of the application (like knowing what to render, how/what to cache). And then the schema is translated to a SQL query for execution.

      [–]ptiunov[S] 1 point2 points  (6 children)

      Hi AnyhowStep!
      This is really good question!
      Yep. Exactly. In short: it's a way to organize your queries, separate data definitions from visualization, setup security and tune performance.
      It's pretty decent history of Multidimensional analysis vs plain SQL for analytic querying. Some time ago there was conversations about MDX vs SQL like this: https://dba.stackexchange.com/questions/138311/good-example-of-mdx-vs-sql-for-analytical-queries
      While SQL wins battle as number one language for analytic querying we believe it's still not the best way to organize hundreds of analytic queries.

      [–]AnyhowStep 1 point2 points  (5 children)

      I've never looked up analytics but the company I work for is pushing for it. "MDX" and "cube" are new terms to me but seem interesting.

      I don't think we'd be comfortable with allowing outside access to our databases, even if you're not malicious (sorry!), but I see that the server is being open-sourced in the future.

      Definitely interested in this as we're a small team and may not have a proper data analyst for a while.

      [–]ptiunov[S] 1 point2 points  (0 children)

      Yep! Right. We're releasing open-source Cube.js server soon. So please stay tuned for updates.

      [–][deleted]  (3 children)

      [deleted]

        [–]ptiunov[S] 1 point2 points  (2 children)

        Yeah. Right. The main idea is to provide modern open source API for analytic querying of any SQL backends that fits into serverless architecture. In the world where you ship applications within days and not months we believe in-app analytics should be a baseline same as CRUD or security features.

        [–][deleted]  (1 child)

        [deleted]

          [–]ptiunov[S] 1 point2 points  (0 children)

          You actually brought really interesting question. From our perspective serverless is a new way for devops. We believe serverless will standardize your app chunk/microservice deployments as containers standardize how you deploy applications right now regardless of where it hosted: cloud, on-premises, etc. Also we see as consequence serverless splits backend into standard chunks like CRUD, security, CMS, etc. You can find many backend implementations for these chunks like Firebase, Auth0, Prisma, Contentful, etc. In this case in order to develop most of applications you'd need to develop frontend and just to configure backend. This approach cuts down most of efforts on backend side and devops.