About the update of vertices, you can avoid it on edge creation, you should set this cfg to -1:
*java ... -DridBag.embeddedToSbtreeBonsaiThreshold=-1 ...* Or in Java, before using OrientDB, with: *OGlobalConfiguration.RID_BAG_EMBEDDED_TO_SBTREEBONSAI_THRESHOLD.setValue(-1);* Lvc@ On 7 January 2015 at 14:03, Pramod N <[email protected]> wrote: > Hook way, I'll try and explore. Thanks for the hint. > > But the application is already very chatty with a lot of checks for > existence of vertices(always queried on indexed field; assuming this does > not affect the availability of the database dramatically), and the addition > of edge certainly is not chained. Its isolated in a create edge query with > from and two given by sub queries. > > The constraint makes sense because of relation and some extent of > relational integrity guarantee provided by the db. I wouldn't say its fair > to compare it with other NoSQL solution's constraint capabilities. > > Irrespective, it'll be interesting to hear about the rationale behind the > design choice to create edge and mutate corresponding vertex during the > process. You are more likely to run into version related problems if there > are concurrent edge creation at load.(and the same holds for > lightWeightEdges) > Sorry, my intention is not to hijack the thread in a different direction > but this seems related. > > > > > > Pramod N <http://atmachinelearner.blogspot.in> > @machinelearner <https://twitter.com/machinelearner> > > -- > > On Wed, Jan 7, 2015 at 4:53 PM, Luca Garulli <[email protected]> wrote: > >> Hi Pramod, >> Unfortunately OrientDB 2.0 doesn't support 100% constraints in >> distributed mode for the reason explained in documentation. This isn't >> something we can do in short term. Consider also that very few NoSQL >> support constraints. You have 2 alternatives to this: >> >> 1. you could write a Hook and register it in OrientDB that catch >> onAfterCreate() and onAfterUpdate() events and do all the checks in Java >> code. In onAfterCreate() you should apply constraints only when the record >> has fields, otherwise skip it. This is because sometimes edge/vertex >> creation is created as empty and then updated >> 2. avoid chained saving with graph. For example if you're creating a >> new edge, assure you have created and saved vertices before the edge. In >> this way you can't have 2 pass saving and constraints would work. >> >> Lvc@ >> >> >> On 5 January 2015 at 06:54, Luca Garulli <[email protected]> wrote: >> >>> Hi, >>> Look at: >>> >>> >>> http://www.orientechnologies.com/docs/last/orientdb.wiki/Graph-Schema.html#constraints >>> >>> Lvc@ >>> >>> >>> On 4 January 2015 at 19:17, Pramod N <[email protected]> wrote: >>> >>>> Hello, >>>> Has anyone encountered the following problem? >>>> Two entities linked with relation and the relation itself is defined as >>>> a class extending E. The trouble is when i fire query like this in >>>> distributed setup, it tries to overwrite the ‘from' set of records with >>>> null and fails!(constraints on the from class) >>>> >>>> create edge CanPlay from (select from Subject where (_id=’group123’) ) >>>> to (select from Game where (_id=‘football' )) >>>> >>>> Subject is an Abstract vertex; User and Group Extends Subject; The >>>> Subject class has _id mandatory and unique constraints. >>>> >>>> >>>> Error: >>>> com.orientechnologies.orient.server.distributed.ODistributedException: >>>> Quorum 2 not reached for request (id=428 from=rc1-auth-local >>>> task=record_update(#13:2 v.3) userName=admin). Timeout=21ms Servers in >>>> timeout/conflict are: >>>> - rc1-auth-local: >>>> com.orientechnologies.orient.core.exception.OValidationException: The field >>>> 'Subject._id' is mandatory, but not found on record: Group#13:2 v3 >>>> - rc1-auth-local3: >>>> com.orientechnologies.orient.core.exception.OValidationException: The field >>>> 'Subject._id' is mandatory, but not found on record: Group#13:2 v3 >>>> Received: >>>> {rc1-auth-local-2=com.orientechnologies.orient.core.exception.OValidationException: >>>> The field 'Subject._id' is mandatory, but not found on record: Group#13:2 >>>> v3, >>>> rc1-auth-local3=com.orientechnologies.orient.core.exception.OValidationException: >>>> The field 'Subject._id' is mandatory, but not found on record: Group#13:2 >>>> v3, >>>> rc1-auth-local=com.orientechnologies.orient.core.exception.OValidationException: >>>> The field 'Subject._id' is mandatory, but not found on record: Group#13:2 >>>> v3} >>>> >>>> The above exception looks like a symptom than the problem. >>>> >>>> Pramod N <http://atmachinelearner.blogspot.in> >>>> @machinelearner <https://twitter.com/machinelearner> >>>> >>>> -- >>>> >>>> -- >>>> >>>> --- >>>> 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 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 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 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.
