This looks great, thanks! So much simpler than the CSV serializer. I see that you do have to buffer the record in memory still, as I suspected. I really do wish they would make the change I suggested below, putting the record format before the actual record - I think then you wouldn't need to buffer records in memory before you can deserialize. Thoughts? On Dec 10, 2014 1:09 PM, "GoorMoon" <[email protected]> wrote:
> Hey, > I don't know about PHP driver but, i contribute to .NET Driver > https://github.com/orientechnologies/OrientDB-NET.binary > i implemented a lot of features of Binary Serializer, and may help you > with your question. > About RECORD_LOAD i don't have any problem and get document in binary > format. > > On Tuesday, December 9, 2014 6:15:13 PM UTC+2, mindplay.dk wrote: >> >> We are well aware that this is no small undertaking, but we believe in >> OrientDB and we think it's worthwhile. >> >> > one big step is actually implement the serialize/deserialize of hte >> document correctly from the binary serialization >> >> To my knowledge, that has not been done in php yet, by anyone? All >> existing implementations, including the fork by Ostico, support only the >> CSV style serialization. The binary serialization format actually ought to >> be a lot easier to implement, as it won't require a state machine/parser >> like the CSV format - and also should be a lot more CPU friendly, memory >> efficient, and less bandwidth overhead, so we're targeting that exclusively. >> >> We're also targeting the most recent protocol, which already differs >> substantially from what we were able to reference from existing >> implementations, which are based on older versions of the protocol. We hope >> to support the final version of the protocol when OrientDB 2.0 is released >> - we do not want this client library to only support a legacy protocol from >> inception. >> >> As said though, it doesn't appear that REQUEST_RECORD_LOAD respects the >> serializer setting - it appears to always return records in the CSV format. >> If this a missing feature or server-side issue, we won't get very far with >> our client anytime soon... Either way, we need someone who can at least >> answer the question and help set us on the right path. >> >> At this moment, we are stalled, since we don't even know if the server is >> behaving correctly, or whether we need to support the CSV format or not. >> >> >> On Tue, Dec 9, 2014 at 4:57 PM, Emanuel <[email protected]> wrote: >> >>> We have also other drivers php this one https://github.com/ >>> orientechnologies/php-orientdb that also already have a few forks >>> (example this : https://github.com/Ostico/PhpOrient ). >>> >>> i would like to say that is better have less drivers more update and i >>> warn you, write a driver from scratch is not so easy as it seems :) >>> >>> anyway you are free to do so ;) >>> >>> one big step is actually implement the serialize/deserialize of hte >>> document correctly from the binary serialization, that is quite complex and >>> can be also target of evolution/optimization in not to far future. >>> >>> Here in orient we are evaluating to give an easier way to read/write the >>> document on the binary protocol, but i will open another thread on this :) >>> >>> bye >>> >>> Emanuel >>> >>> >>> On 12/09/2014 11:48 AM, Rasmus Schultz wrote: >>> >>> Doctrine is the only one of those projects that still have any traction >>> - and it's a full scale data mapper, what we need is a simple >>> driver/client. >>> >>> We are of course referencing those projects for lots of implementation >>> details, but we're shooting for something much simpler and more low-level, >>> something people can use to build their own mappers/DAO/AR implementations >>> on top of. >>> >>> We're also designing the whole thing using very basic OOP patterns (no >>> traits) in the hopes of porting this to a native extension (e.g. Zephir) >>> eventually. >>> >>> We're also designing the whole thing with zero dependencies on other >>> libraries. >>> >>> So we have somewhat different objectives from the other projects, and >>> more of a minimalist mindset, I think. >>> >>> >>> On Tue, Dec 9, 2014 at 12:36 PM, 'Curtis Mosters' via OrientDB < >>> [email protected]> wrote: >>> >>>> Well there is no other Google Group. But why not use the Github already >>>> existing PHP OrientDB projects? >>>> >>>> https://github.com/AntonTerekhov/OrientDB-PHP >>>> https://github.com/doctrine/orientdb-odm >>>> https://packagist.org/packages/orientdb-php/orientdb-php >>>> >>>> I don't know but this would be way better to do it there. WDYT? >>>> >>>> Am Dienstag, 9. Dezember 2014 11:38:07 UTC+1 schrieb mindplay.dk: >>>> >>>>> Is there a different group for developers with more technical >>>>> questions? >>>>> >>>>> I want to help bring OrientDB to php - is this the right place for >>>>> that? Or is nobody interested? >>>>> >>>>> >>>>> On Monday, December 8, 2014 5:19:07 PM UTC+1, mindplay.dk wrote: >>>>>> >>>>>> I'm trying to tackle REQUEST_RECORD_LOAD as the first useful function >>>>>> in my PHP client. (I have the basics like connect and open, error >>>>>> handling, >>>>>> etc. working so far.) >>>>>> >>>>>> This being a PHP client, one major concern for me, is to avoid >>>>>> parsing (with a state machine, as was necessary with the old format) >>>>>> since >>>>>> this is extremely inefficient in PHP - this is one reason I'm targeting >>>>>> OrientDB 2.0 and the new binary format exclusively, as this appears to >>>>>> make >>>>>> that possible (?) >>>>>> >>>>>> Unfortunately, the response format of REQUEST_RECORD_LOAD itself >>>>>> appears to make that impossible. >>>>>> >>>>>> [(payload-status:byte)[(record-content:bytes)(record- >>>>>> version:int)(record-type:byte)]*]+ >>>>>> >>>>>> In order to read sequentially over "record-content", I need to know >>>>>> the "record-type" in advance, so the order of this data appears to be >>>>>> wrong? I believe the record format of each payload chunk would need to >>>>>> backwards, basically: >>>>>> >>>>>> [(payload-status:byte)[(record-type:byte)(record- >>>>>> version:int)(record-content:bytes)]*]+ >>>>>> >>>>>> Otherwise, I am forced to load the whole record-content into memory >>>>>> first, before I can know how to interpret the data. >>>>>> >>>>>> Or am I missing something here? >>>>>> >>>>>> Also, it appears the "record-content" is in the old CSV format, >>>>>> regardless of my having selected the new binary serialization format? >>>>>> Does >>>>>> the REQUEST_RECORD_LOAD command not support the new binary serialization >>>>>> format? Is it not supported everywhere yet? >>>>>> >>>>>> I really do not want a client that has to load and then parse in >>>>>> two stages - this adds considerable complexity, run-time overhead, and >>>>>> duplicates everything in-memory while loading. I'm probably doing >>>>>> something >>>>>> wrong or missing something obvious? >>>>>> >>>>>> -- >>>> >>>> --- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "OrientDB" group. >>>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>>> topic/orient-database/9CKEun_WrrA/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "OrientDB" group. >>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>> topic/orient-database/9CKEun_WrrA/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > > --- > You received this message because you are subscribed to a topic in the > Google Groups "OrientDB" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/orient-database/9CKEun_WrrA/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
