Hi Dhruv, You are welcome:) There is a comparison with other TSDBs [1], which is generated from [2]. Welcome to add more test cases or improve this page~
[1] http://iotdb.apache.org/UserGuide/Master/Comparison/TSDB-Comparison.html [2] https://github.com/apache/iotdb/blob/master/docs/UserGuide/Comparison/TSDB-Comparison.md Thanks, ————————————————— Jialin Qiao School of Software, Tsinghua University 乔嘉林 清华大学 软件学院 Dhruv Garg <[email protected]> 于2021年4月11日周日 下午2:46写道: > Hi Jialin, > > Thanks a lot for your inputs. Will test v0.12 out then and also start using > insertTablets(). > > I had seen the original IoTDB paper > <https://www.vldb.org/pvldb/vol13/p2901-wang.pdf> - on which you are a > co-author :) - had shown IoTDB working on the Raspberry Pi. I have been > testing the IoTDB data ingestion/ querying on desktop and Raspberry Pi, in > comparison with InfluxDB v2.0. Do let me know if there are any plans of > benchmarking / comparative study that your team intends to do with IoTDB, > InfluxDB or similar TSDBs. I could contribute to that. > > Regards, > dgargcs > > On Sun, 11 Apr 2021 at 11:55, Jialin Qiao <[email protected]> wrote: > > > Hi, > > > > 1. *Can I use the API on v0.11.2 (I am currently using this) or do I > > need v0.11.3?* > > > > You can use 0.11.2, we do not change the RPC API in a minor(bug-fix) > > version. > > > > 2. *Is there any limit to the number of rows that can > > be inserted at once using insertTablet()? Or, is there an optimal number > of > > rows per insertTablet() to get best performance?* > > > > It depends on the columns of the Tablet. The default rpc size limit is > > 64MB, so rows * columns * 8Byte < 64MB. > > I usually set rows to 1000 when I have 1000 columns. > > > > 3. *Since insertTablet() also takes rows for one > > device, what exactly is the difference between insertTablet() and > > insertRecordsOfOneDevice()? Are they for different use-cases? Which > > performs better?* > > > > insertRecordsOfOneDevice is actually an improved version of > > insertRecords(): all records belong to one device, so we only acquire one > > writelock in the writing process. > > > > InsertTablet requires that each row has all measurements(using primitive > > data types to store data), insertRecordsOfOneDevice allows each row has > > different measurements(using Object to store data). > > > > Performance: InsertTablet > insertRecordsOfOneDevice > insertRecords > > > insertRecord > > > > InsertTablet is always the fastest :) > > > > 4. *I suppose IoTDB does not have benchmark numbers for such devices? * > > > > We haven't tested these cases. > > > > 5. *How soon can we expect it to come out? Or can I test it out even now > > since I eventually > > plan to start working with it? Is it stable enough?* > > > > The release is already got more than 3 binding votes, it will come out in > > one or two days. > > You can get it from > > https://dist.apache.org/repos/dist/dev/iotdb/0.12.0/rc1 > > > > We fixed nearly all important known bugs in 0.12.0. The single-node > version > > is stable enough. > > The data migration in the cluster version is not supported, and the test > of > > the cluster version is not very much. > > Welcome to test it and give feedback :) > > > > 6. *What benefits does the new Tsfile structure in v0.12 bring? Does it > > improve DB data ingestion/query performance?* > > > > It removes some redundant fields in the previous version (decreasing disk > > occupation) and optimizes the performance of the raw data query. > > > > Thanks, > > ————————————————— > > Jialin Qiao > > School of Software, Tsinghua University > > > > 乔嘉林 > > 清华大学 软件学院 > > > > > > Dhruv Garg <[email protected]> 于2021年4月11日周日 下午1:38写道: > > > > > Hello Jialin, > > > > > > Thanks for your response. > > > > > > 1. Alright I will definitely move from insertRecords() to > insertTablet() > > > then. *Can I use the API on v0.11.2 (I am currently using this) or do I > > > need v0.11.3?* > > > > > > 2. The info you provided on insertTablet() is very helpful. I could > start > > > with that. I think specifying the data types at the top of the file > will > > > also help reduce the data-type inference time for the api and possibly > > > reduce ingestion time. *Is there any limit to the number of rows that > can > > > be inserted at once using insertTablet()? Or, is there an optimal > number > > of > > > rows per insertTablet() to get best performance?* > > > > > > 3. Also, I see that there is a new API in v0.12 called > > > insertRecordsOfOneDevice(). *Since insertTablet() also takes rows for > one > > > device, what exactly is the difference between insertTablet() and > > > insertRecordsOfOneDevice()? Are they for different use-cases? Which > > > performs better?* > > > > > > 4. So the Raspberry Pi are low-end devices. They run on lower RAM > (2GB), > > > have ARM processors and use SD cards for persistent storage. *I suppose > > > IoTDB does not have benchmark numbers for such devices? * > > > > > > A couple of additional questions: > > > 5. I see that the IoTDB team is nearing release of v0.12. *How soon can > > we > > > expect it to come out? Or can I test it out even now since I eventually > > > plan to start working with it? Is it stable enough?* > > > > > > 6. *What benefits does the new Tsfile structure in v0.12 bring? Does it > > > improve DB data ingestion/query performance?* > > > > > > Thanks in advance! > > > > > > On Thu, 8 Apr 2021 at 17:26, Jialin Qiao <[email protected]> > wrote: > > > > > > > Hi, > > > > > > > > 1. InsertTablets could reach more than 3 times faster than > > insertRecords. > > > > > > > > 2. Yes, Tablet is actually a small table with some columns and rows. > > > > It has a time column and many value columns. In each row, all columns > > > must > > > > have a value. > > > > > > > > An example: > > > > > > > > time, root.sg.d1.s1, root.sg.d1.s2 > > > > 1, 1, 2.2 > > > > 2, 1, 2.2 > > > > 3, 1, 2.2 > > > > > > > > Tablets do not allow to have null values. > > > > > > > > However, the tablet uses an array of primitive types to store data > in a > > > > columnar format, e.g., long[], int[], double[]. > > > > If you store data in a text file, the data type indicator is needed, > > like > > > > this: > > > > > > > > time, root.sg.d1.s1, root.sg.d1.s2 > > > > long, int, double > > > > 1, 1, 2.2 > > > > 2, 1, 2.2 > > > > 3, 1, 2.2 > > > > > > > > Then you could generate a tablet from the data and then use the > > > > insertTablet. > > > > > > > > 3. You could check the memory allocated in Raspberry pi. Is it the > same > > > as > > > > on desktop? This may impact the write throughput. > > > > > > > > Thanks, > > > > ————————————————— > > > > Jialin Qiao > > > > School of Software, Tsinghua University > > > > > > > > 乔嘉林 > > > > 清华大学 软件学院 > > > > > > > > > > > > Dhruv Garg <[email protected]> 于2021年4月8日周四 下午1:36写道: > > > > > > > > > Hello all, > > > > > > > > > > In the past month I have been using the JDBC client of IoTDB to > write > > > > data > > > > > from CSV into IoTDB and also query on the data. Looking at the CSV > > code > > > > in > > > > > ImportCsv.java > > > > > < > > > > > > > > > > > > > > > https://github.com/apache/iotdb/blob/master/cli/src/main/java/org/apache/iotdb/tool/ImportCsv.java > > > > > >, > > > > > it seems that csv itself is again parsed into an IoTDB-friendly > > > structure > > > > > and then ingested. I would like to avoid the csv-parsing time and > > > > directly > > > > > provide the data as needed to IoTDB. This should improve the > > ingestion > > > > > performance. > > > > > > > > > > What I am talking about is similar to InfluxDB where we can also > > parse > > > > from > > > > > CSV to InfluxDB's native line protocol and then ingest the data > into > > > DB. > > > > > However, for better performance, InfluxDB also provides write APIs > > > > > < > > > > > > > > > > > > > > > https://github.com/influxdata/influxdb-client-java/blob/master/client/src/main/java/com/influxdb/client/WriteApi.java > > > > > > > > > > > to take records in line protocol as input and directly ingest > those. > > > > > > > > > > I have three questions: > > > > > > > > > > 1. I see that IoTDB is getting newer write APIs like > InsertTablets > > > and > > > > > it seems that it is designed to be faster than insertRecords. > > > > > Approximately > > > > > how much performance improvement have you seen with > InsertTablets? > > > > > 2. Is there a way to create a data file such that it is easy to > > use > > > > > InsertTablets with it? This is to know if I can create an > > > > IoTDB-friendly > > > > > and IoTDB-specific input file and then directly use > InsertTablets > > to > > > > > ingest > > > > > the data. > > > > > 3. As a preliminary check, I am also trying out IoTDB on > Raspberry > > > Pi > > > > 4B > > > > > devices. However, the ingestion time with CSV on the Raspberry > Pi > > is > > > > > taking > > > > > 10 times of what it is on the desktop (amd64). This ratio should > > > have > > > > > ideally been closer to 4X, based on other applications that I > have > > > > > benchmarked. Have you all run any Raspberry Pi benchmarks for > > IoTDB > > > > > earlier? > > > > > > > > > > I would be awaiting your response. Thanks! > > > > > > > > > > Regards, > > > > > dgargcs > > > > > > > > > > > > > > >
