[HN Gopher] Cube.js - Open-Source Analytics API for Building Dat...
___________________________________________________________________
Cube.js - Open-Source Analytics API for Building Data Apps
Author : chetangoti
Score : 89 points
Date : 2021-10-23 05:51 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| ushakov wrote:
| how does it compare to Hasura?
| peiback wrote:
| In essence, you may want Hasura/GraphQL if you have no idea how
| the end-users' query format will look, whereas Cube is well-
| suited for providing performant results for somewhat
| predictable sets of queries. Disclaimer: I work on Cube.
|
| My colleague Igor explains it better: Hasura is for CRUD with
| reasonable performance, Cube is for fetching analytical
| (quantitative) data with sub-second latency and high
| concurrency. Hasura is great as a general-purpose data backend,
| Cube is great as an API for analytics. Obviously, they can be
| used in the same app, e.g., a blog can serve posts and comments
| from Hasura and show an upvotes/downvotes chart or a rating of
| most productive commenters via Cube.
|
| And here are a few user stories:
| https://cube.dev/blog/category/user-stories/
| tenaciousDaniel wrote:
| Last year my (former) team and I spent months evaluating BI
| solutions. Every week we were having meetings with companies like
| Tableau, Looker, etc.
|
| In the end, my opinion was that we should just use CubeJS.
| Unfortunately it wasn't mature enough at that time, as it had
| only recently begun to support Snowflake (our backend).
|
| If I were a betting man, I'd say they've got a very bright future
| ahead of them. Really cool product and idea.
| hodgesrm wrote:
| Cube.js fills a need I've heard many times in ClickHouse work--
| how to build a clean data delivery API that mediates
| application access to analytic databases. There's a basic
| impedenance mismatch between highly concurrent apps that may
| have 10s of thousands of users and backend data warehouses that
| run massivley parallel queries in order to get predictably fast
| response.
|
| Just as a shameless plug, Pavel Tiunov is going to be talking
| about design decisions on Cube Store at OSA Con on November 2.
| [0] We feel this type of technology is fundamental to scaling
| analytic apps, which is why we picked Pavel's session for
| inclusion.
|
| [0] https://altinity.com/osa-con-2021/
|
| Disclaimer: I work at Altinity on ClickHouse.
| mrwnmonm wrote:
| I am building a BI solution, with a different approach. What
| were you looking for in those solutions?
| tenaciousDaniel wrote:
| Nice! The space is pretty ripe for disruption because
| basically all of the tools are pretty old-school. Here are
| the things I really wanted:
|
| 1. Create dynamic schemas. Some of our clients had their own
| dimensions that they cared about.
|
| 2. Pick the level of integration. Imagine having an out-of-
| the-box integration available, but then offering fully
| customizable solutions for one-off scenarios.
|
| Really it comes down to those two things, which basically
| means "flexibility". Like I said, we spent _months_
| evaluating products, and while we found several companies
| claim to offer the above, no one actually did.
| tenaciousDaniel wrote:
| One thing I did not like about CubeJS (not sure if they've
| changed this), is that their integration is its own
| standalone server. Like, if you have an existing server, it
| didn't seem possible to just integrate it into what you
| already have. That was kind of a bummer, but it wasn't a
| deal breaker.
| igorlukanin wrote:
| Long time ago, it was possible to built Cube into a
| Node.js app. However, the team decided to deprecate it:
| https://github.com/cube-
| js/cube.js/blob/master/DEPRECATION.m...
|
| The motivation is diverse but one of the reasons is that
| a Cube app should be scaled differently from a client-
| facing app. Noone probably wants their app to hang when
| Cube serves a ton of requests or refreshes cached data
| (and vice versa). That's why it's recommended to run Cube
| as microservices. I hope it's not a big deal since a lot
| of cloud platforms provide container environments.
|
| Also, just recently, we've launched Cube Cloud which
| provides serverless experience for Cube apps and has a
| free tier: https://cube.dev/cloud/
| pklee wrote:
| What do you mean by dynamic scheams ?
| igorlukanin wrote:
| Hey! Igor from the Cube team here. Coincidentally, in a few
| days, we're having a workshop on multitenancy where we'll
| cover dynamic schemas:
| https://cube.dev/events/multitenancy. We'll show how to
| customize schemas using pure JavaScript.
| mason55 wrote:
| Do you have recordings or transcripts of the workshops?
| Multitenancy is huge for us and I'd love to see what
| CubeJS is offering now but I can't make the workshop
| peiback wrote:
| we will, yes! here's our last workshop's recording, for
| pre-aggregations:
| https://www.youtube.com/watch?v=1_BP3B_wbec
| [deleted]
| mason55 wrote:
| I came to the same conclusion around the same timeframe. All
| the current solutions are not great but CubeJS just didn't have
| enough maturity yet. I decided to just hold off on making any
| changes for a year or two and reevaluate.
|
| Hopefully they are still going strong in the spring/summer and
| then maybe we will go all in.
| peiback wrote:
| Thanks for sharing! I'm on Cube's product team and we'd love your
| feedback on what else we can do to improve Cube. We also welcome
| your input on our Slack/GH.
|
| I've worked on a few open-source projects, so I'll just share
| what I personally love about Cube and what drew me to the project
| in the first place:
|
| 1) It has an un-opinionated but well supported front-end dev
| experience focused around an intuitive OLAP-based API. OLAP =
| think measures, dimensions, etc. What I mean by "un-opinionated"
| is we expect most developers want to create their own
| visualization layer, whether that's a dashboard, a report, or
| just any kind of data-intensive app you can imagine, instead of
| being forced to embed a hardset iframe, for example. But this is
| still a well-supported workflow in Cube, despite the
| customizability, as we enabled code-generation features that also
| work for most major JS UI frameworks (Angular, React, Vue). And,
| we're now actively working on a SQL connector for Cube, too, so
| if you want to query Cube with a SQL-driven BI tool like Apache
| Superset, that'll soon be doable, too. Additionally, a GraphQL
| interface is potentially coming soon, too (Cube's API is
| currently REST).
|
| 2) It has the ability to read data from all the major modern
| databases, warehouses, and query engines. I saw a comment above
| about Snowflake, and yea, that and other big data platforms out
| there have been our primary focus this year, so we've made recent
| improvements here, in terms of performance and reliability. We're
| now working on integrations for streaming datasources, e.g Kafka.
| I'm particularly excited about this!
|
| 3) Slow queries are problematic, especially in dashboards. I
| don't know about you, but it really bugs me to see wonderful apps
| everywhere with poor analytics user-experiences, with load times
| at half a minute or more. One of Cube's best features here (and,
| admittedly, perhaps one of the more complex ones to understand,
| which we're working on, too :), is made possible by pre-
| aggregations and Cube Store, the caching component of Cube
| specifically designed and fine-tuned for querying large datasets.
| You can think of a pre-aggregation as a condensed, materialized
| view of your query results that can serve multiple permutations
| of queries, and yet are decently efficient with data freshness as
| well as minimizing your backend data processing costs.
|
| We're also extremely fortunate to have such a supportive open-
| source community that propelled this project forward much further
| than we could have imagined; y'all's trust in this project and
| its continued enhancement is what has really kept it going and
| growing.
___________________________________________________________________
(page generated 2021-10-24 23:02 UTC)