orientechnologies / orientdb-labs

OrientDB Labs hosts last development version of OrientDB.
Apache License 2.0
17 stars 3 forks source link

[OEP16] Binary protocol review #16

Open tglman opened 7 years ago

tglman commented 7 years ago

Summary: A complete review of the binary protocol, introducing streaming, server side transaction, and specifications for any other data send on the binary channel.

Goals: Stabilize the binary protocol introducing all features needed for all the 3.x version and future, avoiding the need of review.

Non-Goals:

Define a replacement of the binary protocol.

Success metrics:

No change of the specification for all the 3.x version. Support of this specifications from third party.

Motivation:

Stabilization of the binary protocol. Add support for the functionality requirements for 3.0

Description:

For version 3.0 will be a general refactor on the binary protocol, it will guarantee the compatibility with 2.x protocol.

The changes are split in 6 main area

  1. general review of protocol flow, handshaking and low basic data transfer
  2. Redesign of push request based on subscribe.
  3. Introduction of server side transaction
  4. Introduction of new result set handling
  5. Unification under the same protocol specification of all client required informations
  6. Review of error format and specification of error by code

    1) Genera review of protocol

    • Introduction of a new phase of handshaking as soon as a connection happen where client and server share protocol versions and specifications.
    • remove all the protocol specific information from connect and open
    • evaluate if introduce varint in the serialization of network messages.

      2) Subscribe based Push Request

The push request flow will change to the following steps:

Alternatives:

Define a new protocol, that cover all the case that we cover now with all the new cases.

Risks and assumptions:

Is going to require an big effort from contributors.

Impact matrix

luigidellaquila commented 7 years ago

Just a couple of comments:

1) Genera review of protocol

consider that this protocol is also used by the distributed layer for inter-server communication (maybe it's a good time split the two?)

3) Server Side transaction

add support of transaction download and upload after a not idempotent query (When a statement is executed on the server, the client transaction has to be flushed to the server, but also the server transaction has to be sent back to the client)

tglman commented 7 years ago

1) yes i want to distributed be out of the spec, and probably that speck don't need to be public. 3) yes i meant that, corrected

tglman commented 6 years ago

Hi,

Most of this has been implemented, working on the documentation and defining the push for metadata. we are near to close this OEP with the full implementation