3 ms·
We’re thinking of storing data into Elastic - any thoughts on that approach, or recommendations on how / what to do?
by karmelapple 8y ago
We’re thinking of storing data into Elastic - any thoughts on that approach, or recommendations on how / what to do?
- buremba 8y agoElastic is great when it comes to storing the log data but since it's not ANSI SQL compliant, it's hard to run complex queries that involve JOINs, WINDOW operations, and subqueries. Depending on the data volume, you can use one the SQL based data warehouse solutions such as Redshift, Presto, BigQuery or Snowflake (even PG works if you have less than 100M events per month) and run ad-hoc queries on your raw customer event data easily. It's a bit tricky to run behavioral analytics queries such as funnel and retention but we provide non-technical friendly user interfaces that don't require you to write any SQL. I would love to talk about your use-case, feel free to shoot an email to emre {at} rakam.io
- sologoub 8y agoThis also depends on why you are choosing this technology - is it part of your existing stack or do you have in-house experts in this tech? While Lucene synax is very powerful, it is not SQL as pointed out by the OP. If you have a lot of spare developer time and people skilled in this, it will likely work well for a while (potentially a really long while). Going with something like BigQuery or Redshift enables you to utilize other tech to supplement or accelerate skill sets, such as paying a SaaS for visualization/analysis tools (Looker, Mode, etc). In particular, separation of storage and processing helps avoid costs when you are not using the data. With elastic, I believe you need the cluster whether you are using it or not. BigQuery will only charge you for compute you use and pennies for storage. Same thing for Athena/Redshift spectrum. Snowflake is similar, but I believe for enterprise contracts it a bit more complex with minimums and such. Structuring data is another really important consideration - will you need to normalize and will you need to update labels/dimensions? That’s just the start.
- karmelapple 8y ago> is it part of your existing stack or do you have in-house experts in this tech? Nope and nope. That's definitely the scary / unknown part! > If you have a lot of spare developer time and people skilled in this, it will likely work well for a while (potentially a really long while). We don't have a lot of spare developer time and people. However, the Elastic docs make our fairly straightforward use case - dump lots of events in and filter them by date and about 4 different properties - seem not too daunting. The way it's sold on the Elastic site these days seems like a very "batteries included" kind of approach - am I interpreting their marketing a little too positively? Are we kidding ourselves? Would love to hear more about your thoughts! > Structuring data is another really important consideration - will you need to normalize and will you need to update labels/dimensions? That’s just the start. We don't expect much. Thanks for mentioning the other technologies, too! The way we're structuring it allows us to either use Elastic, SQL, or something else entirely, so thankfully we're fairly agnostic on the data store. If Elastic turns out to be a time sink, we'll have no hesitation trying something else out.
- mywittyname 8y agoI do both: use ELK for deep dive on analytics and have a traditional data warehouse for SQL. Elastic is really good for data exploration. Kibana's discovery page makes it trivial to start diving into your events and gain insights. This is most valuable for large, complex applications where you don't necessarily control the analytics tagging (thus devs can create new tags willy-nilly). It's also easier for non-technical users to get into, since there don't need any sort of SQL experience to build reports. Elastic is really bad at performing aggregations. You can do it, but they are incredibly memory-intensive, and using them puts the cluster at risk of failure due to out of memory exceptions. It doesn't take many concurrent users for this to be an issue. Traditional data warehouses are still the best place to get counts though. Assuming your users can write SQL, they can get everything they would want and it will be reliable. Newer databases support JSON structures, so you can even host arbitrary-sized dynamic event data in them like you can with Elastic.