21 ms·
Pilosa: An open source, distributed index
- sktrdie 7y agoNot sure who this document is aimed to. It's not technical enough to appeal to programmers that are working closely with Pilosa. And it's not written in a way to make it easy to understand for people that don't know anything about Pilosa (such as myself). I mean a subtitle called "Time Quantum" is enough to make me confused. Would appreciate a more generic "what is this" intro if possible.
- kitd 7y agoThe link goes straight to the "Data Model" section. The Introduction section is a better starting point. There are other sections (Getting Started, Architecture and API Reference) for programmers who want to know the details.
- dmos62 7y agoI found the use cases section the most informative. You can click on a use case to get a write-up. Here's a few excerpts from transportation: > Pilosa is a distributed bitmap index that sits on top of a data store. The key to understanding and then using Pilosa is converting data such that it is represented in ones and zeros. This dramatically reduces the size as well as accelerates query times. > For example, timestamps are important information, but we tend to be interested in individual components of a timestamp, especially when analyzing data with cyclic trends. Timestamp components are stored as groups of bitmaps, known as “frames”. We create one frame for the day of the week, as illustrated in the following table. Along with similar frames for year, month, and time of day, this accelerates queries that ask questions about rides belonging to any logical combination of these time groups. > [...] > Because each data point includes pickup/dropoff times and total distance travelled, it’s easy to determine the average speed of the trip. As an example, we use this as a first order approximation of congestion. We created a frame representing average speed, with a spacing of 1 mph. > In order to answer questions about congestion, we needed to first determine what speeds constitute slow traffic. One of the basic queries in Pilosa is the TopN function, and we used that to get a list of all the different average speeds. By performing a count on each we built a histogram of how many rides fall into each speed bucket, and decided from there which buckets deviate enough from the norm to constitute congestion.
- dTal 7y ago>converting data such that it is represented in ones and zeros er, what? Isn't it all? >This dramatically reduces the size huh? There is no symbolic encoding less efficient for length than binary.
- jaffee 7y agoGood catch... that sounds pretty silly. It should probably read more like "converting relationships to be represented by single bits" As a concrete example, we took the NYC taxi ride data set which is something like 300GB of CSV files and when it was indexed in Pilosa, the total size of all the bitmap files was closer to 40GB.
- kazinator 7y agoIt's quite clear to hopefully everyone that a matrix of bits can represent a DAG. That's called an adjacency matrix. What's not obvious is what we're associating with what in the NYC taxi ride data set. A bitmap can also represent a set: the bit positions denote enumerated element symbols, and the value indicates whether that element is present. So we rearrange the NYC taxi ride data into a data structure based on graphs and sets, and make large bitmaps?
- fnordsensei 7y agoWell, you could decide that one axis is monkeyIndex, and the other is amountOfBananasOwned, and have a quite compact representation of which monkey owns what number of bananas. I.e., decide on a symbolic meaning for the axes rather than converting data wholesale.
- ytklx 7y agoThis is very similar to how Pilosa saves integers. https://www.pilosa.com/docs/latest/data-model/#bsi-range-encoding https://www.pilosa.com/docs/latest/data-model/#bsi-range-enc...
- 7y ago
- maycotte 7y agoGreat feedback. We could also do a better job of documenting the most frequent use cases which include high cardinality segmentation, personalization at scale, rapid data exploration/discovery, edge analytics, fast BI, threat detection, bioinformatics and more.
- ahazred8ta 7y ago"Continuous Analysis on Really Big Data - Pilosa is an open source, distributed bitmap index" https://www.pilosa.com/ https://www.pilosa.com/
- continuations 7y agoHow do you handle race conditions? E.g. an app updated the persistent store but crashed before it could update Pilosa?
- jaffee 7y agoPilosa is best used in conjunction with something like Kafka with (e.g.) separate consumers for Pilosa and a persistent data store.
- eismcc 7y ago>Pilosa is a standalone index for big data. Its goal is to help big data storage solutions support real time, complex queries without resorting to pre-computation or approximation. Pilosa achieves this goal by implementing a distributed bitmap index which provides a compact representation not of the data itself, but of the relationships present in the data. https://www.pilosa.com/pdf/PILOSA%20-%20Technical%20White%20Paper.pdf https://www.pilosa.com/pdf/PILOSA%20-%20Technical%20White%20...
- jaffee 7y agoSource code: https://github.com/pilosa/pilosa https://github.com/pilosa/pilosa
- joshuaellinger 7y agoTechnically, it is very interesting -- it uses Roaring Bitmaps under the hood and builds a query engine on it. So an easy way to think about it is that it maps categorical data into a giant compressible distributed bitmap. I've been planning to see if I can (mis)use it as an OLAP replacement but I haven't had time to get to it.
- jaffee 7y agoYou definitely can... the feature set keeps growing. We have multi-field filtered GROUP BY now. It's amazing to see how flexible Roaring Bitmaps can be!
- contrasti 7y agobad readability - please use more contrast, better font.
- shuzchen 7y agoAny chance there'll be some built-in support to perform collaborative filtering? Seems like a database of relations like this would be awesome for user-based collaborative filtering.
- jaffee 7y agoGreat question! We have actually done some experiments with this in the past and will likely be rolling out features like this on top of Pilosa as part of Molecula https://www.molecula.com/is-your-data-ai-ready/ https://www.molecula.com/is-your-data-ai-ready/