Live data from Hacker News

Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

news.ycombinator.com

31–40 of 61 posts

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#31
post #27
post #16

Earlier quoted context omitted.

Also replying since I wrote this up :) - activity_id : a unique identifier for the row - activity : the type of activity (eg 'page_view') - timestamp : time the activity happened - customer : the unique customer identifier Metadata columns Three columns for any info we'd like to add to an activity. Eg for a purchased product activity it could be product name. - feature_1 - feature_2 - feature_3 - revenue_impact : the…

Only three metadata fields or can you have more?

We do have the ability to enrich an activity and add as many more features but that is very rare.

I am sure you used to a lot of features in a table but in Narrator you can burrow any feature from any activity so you often don't even have 3 features.

https://docs.narrator.ai/docs/how-to-borrow-features-from-ot...

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#32

Hard to imagine a worse idea. The problem in data warehousing is not the structure , it's the definitions . It doesn't matter one tiny little bit whether you store your data in a fact/dimension star schema, a normalized OLTP-style schema, arbitrary aggregate/rollup tables, or this one-table monstrosity you've constructed. You still have to do the work of determining what the data means . This isn't 50% of the work of…

Appreciate the skepticism, since yes, we're a totally different approach.

I'll try to address your points in order.

Yes, we agree that 99% of the work is determining what the data means. Our structure doesn't magically make things better because of its structure. It's that once you have it analysis / aggregation on top of it becomes substantially less work because you don't have to constantly redo models to answer new questions.

Yeah, we've all been there -- production DBs aren't typically architected to store historical data. But we've found in practice that the data sources you most care about do have it. Page views, emails sent / received, completed orders, etc. all have timestamps. And for some things you don't need it. If you wanted to do a query with all customers who are VIPs, you wouldn't need a 'became VIP' activity. Adding is_VIP as a feature to the customer in the activity stream works too. Generally if you can do an analysis the more traditional way then you should already have the data to do it in Narrator too.

Sure, star schemas are the way of doing things and this is a new approach. But the efficiency gains realized by our own data scientists are enough to where they wouldn't go back -- it warrants the investment in learning it. Our challenge as a business will be how to convince others of that as well.

What we mean by single source of truth is that data is internally consistent - each term is defined once. In your scenario you'll have a single 'completed order' activity with the total order amount. If you want to add shipping cost that's fine -- add a 'added shipping to order' activity with the cost in it. Do the same with sales tax. Bob, Alice, and Jimmy can create reports with whatever activities they want. The crucial point is by making those reports they're not defining a new model. They're just combining activities. Since all tables are generated straight from the activity stream a future analyst won't use a materialized view based on Bob's data to build a new report -- they'll build it straight from the original activities.

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#33

This sounds very similar to the approach used by Salesforce internally. How does it differ?

Hmm. That's interesting. I'm not familiar with what Salesforce does. Do you have any more info about it? I'd love to learn more!

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#34

Hard to imagine a worse idea. The problem in data warehousing is not the structure , it's the definitions . It doesn't matter one tiny little bit whether you store your data in a fact/dimension star schema, a normalized OLTP-style schema, arbitrary aggregate/rollup tables, or this one-table monstrosity you've constructed. You still have to do the work of determining what the data means . This isn't 50% of the work of…

Definitions are super important. Getting agreement on definitions is really hard and can easily get us stuck in a loop.

In my last job, we spent months talking about "What is a Sale?" is it when someone signs a contract or when they pay or when they move in, etc...

Then you add your sale metric into a table and as that table is used in different places the sales numbers till don't match, people don't remember what a sale is and the conversation starts up again.

Why is Narrator different?

In Narrator, you don't define what a sale is, you break up your data into customer actions. So "Signed Contract", "Paid Invoice", "Moved In" and thus as people ask different questions we can alway clearly see what they are referring to.

Step 1 to alignment is guaranteeing consistency and transparency.

How do you deal with states? You are right that does make it really hard. We see customers leveraging the incremental aspect of the activity stream to diff the stream with the updated_at to pull out changes as the activity stream updates. (every 15 minutes so yes you will loose changes in between that time). This doesn't solve the problem but does take you much closer. And then when you do add proper timestamps then you can have historical data in the activity stream and cleaned data from you new tables merged. All the users using that activity are NOT affected.

Not perfect but allows us to have as accurate data as possible.

What about the market? Yes, I agree the market is a challenge since the world has been only using star schema. We hope that standardization, speed, reusability aspect of Narrator is so compelling that people slowly switch.

How do we get numbers to match? Consistency and Transparency. Every one who uses the "Completed Order" uses the same revenue. SO it is consistent! Then you can add the "Shipped Order" activity which has the shipping amount.

By having clear CONSISTENT definitions and clear activities you end up in a world where your numbers match. The only ways for numbers not to match is if some is being deliberate about getting the data not to match which thanks to dataset, is always transparent.

Definitions are a social problem but technology, limitations and consistency can help a lot.

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#35
post #3
post #2

How are you solving the problem of scale? Wouldn't everyone else be using this approach if the need to e.g. maintain indexes was overruled by your table join technology? Or is the idea that you specify the type of dataset you want, and then wait a few hours for the table to be generated from the activity stream? Good luck with your launch, this is a cool and novel take on data analytics.

Thanks! We've found that this scales fairly well. Tables generated from the activity stream are generally done in seconds or minutes at the worst case. One reason for this is that most warehouses are column-oriented. This means our table, which is 11 columns wide but pretty deep, is really fast to query. We had a customer on a 3 Node (tiny) DS large Redshift warehouse dealing with billions of rows. Their Looker queri…

If I understand correctly:

1. you define activities, each with an associated SQL query eg customer opened support ticket: SELECT * FROM tickets WHERE customer_id=$customer_id

2. users use Narrator UI to build a report, similar to Looker

3. Narrator creates a table for that report in the same db and populates it with data, based on 1.

4. Narrator maintains all the reports tables (updates, deletes when report is deleted)

?

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#36

[Co-founder here of a start-up that provided monitoring / metadata analytics for cloud warehouses] My unsolicited $0.02 - I think your approach is spot on. As a company, you will never have one consistent data set and metrics if you keep building an individual model for each user / use case / etc. And I've seen the explosion of tables and models in real-time. They just keep growing. And how do you even know that the…

This is so great! You see exactly what we see and clearly you have shared similar experiences with dashboards not matching because of wrong table. (The good old "spent 3 weeks debugging an analysis using sales_data and then finally found that sales_data_v2 was built to solve it). Yeah we do something very similar to dbt for taking restructuring the data into a single time-series table. We add things like identity res…

scheduled!

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#37
post #3

Earlier quoted context omitted.

Thanks! We've found that this scales fairly well. Tables generated from the activity stream are generally done in seconds or minutes at the worst case. One reason for this is that most warehouses are column-oriented. This means our table, which is 11 columns wide but pretty deep, is really fast to query. We had a customer on a 3 Node (tiny) DS large Redshift warehouse dealing with billions of rows. Their Looker queri…

If I understand correctly: 1. you define activities, each with an associated SQL query eg customer opened support ticket: SELECT * FROM tickets WHERE customer_id=$customer_id 2. users use Narrator UI to build a report, similar to Looker 3. Narrator creates a table for that report in the same db and populates it with data, based on 1. 4. Narrator maintains all the reports tables (updates, deletes when report is delete…

Yes, that's basically it.

2. The report (we call it Dataset) you build with the Narrator UI is a table that you can aggregate different ways, plot, and export (including writing back to the warehouse as a materialized view)

3. done optionally as part of 2

4. Yes, we keep anything written back to the warehouse up to date. You can control the cadence.

Because of 4. we work well with BI tools like Looker. Once you have the data you want just point Looker to the right table in the warehouse.

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#38
post #37

Earlier quoted context omitted.

If I understand correctly: 1. you define activities, each with an associated SQL query eg customer opened support ticket: SELECT * FROM tickets WHERE customer_id=$customer_id 2. users use Narrator UI to build a report, similar to Looker 3. Narrator creates a table for that report in the same db and populates it with data, based on 1. 4. Narrator maintains all the reports tables (updates, deletes when report is delete…

Yes, that's basically it. 2. The report (we call it Dataset) you build with the Narrator UI is a table that you can aggregate different ways, plot, and export (including writing back to the warehouse as a materialized view) 3. done optionally as part of 2 4. Yes, we keep anything written back to the warehouse up to date. You can control the cadence. Because of 4. we work well with BI tools like Looker. Once you have…

Thanks. Interesting approach!

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#39

Wish you the best of luck but isn't this just a fancier version of EAV? https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80... IMO, it doesn't matter what kind of db technology, schema or query tool that you use. A company will always have analysis sprawl regardless of whether those analyses are represented as data lake files, sql tabes, materialized views, regular views, or (as is often the case with EAV an…

EAV [...] my thoughts exactly. My last encounter with EAV was briefly said disastrous.

On the other hand, HW gets better and better, and if you are able to do on the fly, what used to be a "cached" entity, then there you go.

Re: Launch HN: Narrator (YC S19) – a data modeling platform built on a single table

#40

Wish you the best of luck but isn't this just a fancier version of EAV? https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80... IMO, it doesn't matter what kind of db technology, schema or query tool that you use. A company will always have analysis sprawl regardless of whether those analyses are represented as data lake files, sql tabes, materialized views, regular views, or (as is often the case with EAV an…

EAV [...] my thoughts exactly. My last encounter with EAV was briefly said disastrous. On the other hand, HW gets better and better, and if you are able to do on the fly, what used to be a "cached" entity, then there you go.

Yeah our first iteration of the activity stream was at WeWork and it was impossible to use. For this reason we built our Dataset tool and thanks to our innovation of relationships we are now able to make use of this structure to create any table.

Often, people think that just creating a time-series table is enough but it is so hard to use and so hard to maintain that you will hate yourself. Narrator solve all those problems so your experience become truly incredible!

Post reply on HN