Hi all,
I’m currently going through the english documentation and have noticed a few
things … I guess I’ll be adding more findings as I go along.
General:
* We’re calling the “Data Definition Interface” “DDL” everywhere … however
it should probably be named “DDI” right?
* We’re calling the “Data Manipulation Interface” “DML” … however it should
probably be named “DMI” right?
* We seem to be using both “Schema Template” and “Measurement Template”
mixed throughout the documents.
* InsertTablets seems to receive a “Map” of “path, Tablet” pairs, however
only the Tablet is used, as this contains the path.
* The testInsertXYZ methods claim to be used for testing network as we lase
client costs for an “insertRecord”, but how can I measure these metrics? How
can I distinguish “client time”, “network time” and “server-time”?
* We make very heavy use of the word “Interface”, while sometimes it really
refers to a set of methods or functions, in most cases it’s used for talking
about one individual function or method.
* As we’re generating the python and go sources, why not simply also have
thrift generate the js:node versions too?
C++:
* Here I noticed that the variants not requiring type inference for
insertion add the type-information in the middle of the function signature. I
personally would find it more user-friendly, if this was added last as it
doesn’t change the semantic of the part before.
C#:
* The RowRecord constructor takes the parameters in a differend order
(timestamp, values, measurements) … I would find it more intuitive, if that
was: (timestamp, measurements, values) … just like in the C+ API
* The Tablet has again a completely different order (deviceId,
measurements, values, timestamps) … I would find it more intuitive, if that was
(deviceId, timestampy, measurements, values)
* Many operations in the API define a “CancellationToken”, but this is not
mentioned in the documentation.
* The tables describing the functions only contain the types of the
parameters, also having the name in there might help.
* The tables describing the functions of the APIs don’t show the return
types.
* The tables describing the functions don’t mention what the functions are
used for (TestInsertRecordAsync).
Go:
* The Documentation references Thrift 0.13.0, but the code says we need
0.15.0 but in Java we’re using 0.14.1 (for various reasons)
* The Go API documentation is almost not existent.
* From the prerequisites, I can’t really see why we need “make” and
Windows+bash(WSL, Cygwin, GitBash)
* If I try running the example in “go mod”, I get errors:
cdutz@MBPvonCristofer session_example % go run session_example.go
# command-line-arguments
./session_example.go:478:10: tablet.Reset undefined (type *client.Tablet has no
field or method Reset)
./session_example.go:488:10: tablet.Reset undefined (type *client.Tablet has no
field or method Reset)
./session_example.go:539:10: tablet.RowSize undefined (type *client.Tablet has
no field or method RowSize)
Java:
* Might be worth investigating options to pass in maven parameters as we’re
referencing version 1.0.0 of iotdb-session (just as an example)… would be
better to reference the latest version of the current branch (The snapshot
version for “master” or the “0.13.4” for the 0.13 branch) … in PLC4X we’re
doing exactly that.
* The method: executeLastDataQueryForOneDevice for some reason uses a
completely different approach to address data: Instead of using “path” which
contains db and device, it uses these two separate fields
* The documentation on “Session Pool for Native API” says that there are
multiple occasions, where a SessionDataSetWrapper needs to be closed manually.
Shouldn’t it always be required to close it and as it uses the AutoClosable
interface, shouldn’t a try-with-resources block not automatically handle all
these cases?
* The ClusterInfoService.Client type doesn’t seem to exist.
MQTT
* We’re referencing images from the timecho website, we should probably
integrate the images into the documentation repository.
* In the example custom PayloadFormatter, we should probably point out that
if the Formatter is in a separate jar file and not added to the IoTDB version,
the user needs to create a FAT-jar (containing all dependencies), if he uses
dependencies in it, or he’d have to also copy all dependent jars into the
${IOTDB_HOME}/ext/mqtt/ directory.
NodeJS
* As we’re generating the python and go sources, why not simply also have
thrift generate the js:node versions too?
Python:
* We’re referencing images from the timecho website, we should probably
integrate the images into the documentation repository.
Not yet finished, but that was what I came across in the last two days.
Chris