zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rakesh Radhakrishnan <rakeshr.apa...@gmail.com>
Subject Re: renaming a znode
Date Tue, 17 Jun 2014 18:57:26 GMT
ZK is designed to be highly performant. Probably you can test after
finalizing your client side algo.

Also, you can try multi API to group operations and send as a single
request to the server. It helps to reduce client to server interactions.
Like,
op.delete(/writer/my_current1);
ops.add(op);
op.create(/writer/my_current2);
ops.add(op);
zk.multi(ops);

AFAIK there is no discussions related to renaming znode.

Regards,
Rakesh



On Tue, Jun 17, 2014 at 2:10 PM, Mudit Verma <mudit.f2004912@gmail.com>
wrote:

> Thanks Rakesh. I will have to something like that, but I am quite
> concerned about the performance issues.
>
> BTW, are you aware if this renaming functionality is planned for future
> releases?
>
> Thanks
> Mudit
>
> On 16 Jun 2014, at 04:30 pm, Rakesh R <rakeshr@huawei.com> wrote:
>
> > Hey Mudit,
> >
> > Renaming is not possible.
> >
> > Secondly, do you mean all these entries are at same level, under
> /map_current znode?
> > I'd prefer multiple levels instead of having too many direct children of
> a single znode. ZOOKEEPER-1162 is one such example case study of too many
> children.
> >
> > /map_current/entry1
> > /map_current/entry2
> > ...
> > /map_current/entryn
> >
> >
> > I think, JZ is suggesting the following way:
> >
> > Step1) Get all the children of /map_current // first, get all the
> children(number of op depends on the levels)
> >
> > Step2) Prepare list of transactions and submit to the server   //second
> op
> >       - create /map_frozen/entry1....create /map_frozen/entryn. Ops
> should be ordered like, create parent to child.
> >       - delete /map_current/entry1...delete /map_current/entryn. Delete
> in reverse way from child to parent.
> >
> > Multi send these ops as a single request, but if we have millions of ops
> in a single req it can make the request too heavy. I haven't tested though.
> >
> >
> ----------------------------------------------------------------------------------------------------------------------------------------------------
> >
> > I'm thinking an alternate approach to avoid the bulk delete and
> creation. Does this work for you?
> >
> > /writer/my_current1   -> Clients will always look here and get the
> 'current writer' node. Now he can create entries as follows.
> >
> > /my_current1/my_entry1..../my_current1/my_entryn
> >
> > Now I wanted to frozen /my_current1. Just delete my_current1 from
> /writer/my_current1 and create new writer znode /writer/my_current2.
> > Now clients will see /writer/my_current2 and write entries to this.
> >
> >
> > Regards,
> > Rakesh
> >
> > -----Original Message-----
> > From: Mudit Verma [mailto:mudit.f2004912@gmail.com]
> > Sent: 16 June 2014 19:40
> > To: Jordan Zimmerman
> > Cc: Camille Fournier; user@zookeeper.apache.org
> > Subject: Re: renaming a znode
> >
> > I just realised that we can not even delete a parent node, if it has
> children.  :(
> >
> >
> > On 16 Jun 2014, at 03:43 pm, Mudit Verma <mudit.f2004912@gmail.com>
> wrote:
> >
> >> problem is, it is going to be a very very costly operation (using multi
> transactions). A map may contain millions of entries. I first need to get
> the data of all these entries, delete them and create them again under
> different parent name.
> >>
> >> If we have a rename option, all I need to do is just rename the parent
> znode.
> >>
> >> Thanks
> >> Mudit
> >> On 16 Jun 2014, at 03:42 pm, Jordan Zimmerman <
> jordan@jordanzimmerman.com> wrote:
> >>
> >>> Yeah
> >>>
> >>>
> >>> From: Camille Fournier camille@apache.org
> >>> Reply: user@zookeeper.apache.org user@zookeeper.apache.org
> >>> Date: June 16, 2014 at 8:42:19 AM
> >>> To: bookkeeper-user@zookeeper.apache.org user@zookeeper.apache.org
> >>> Cc: Mudit Verma mudit.f2004912@gmail.com
> >>> Subject:  Re: renaming a znode
> >>>
> >>>> Just to clarify you mean the multi API?
> >>>> C
> >>>> On Jun 16, 2014 9:40 AM, "Jordan Zimmerman"
> >>>> <jordan@jordanzimmerman.com>
> >>>> wrote:
> >>>>
> >>>>> You could use the transaction api to create a new node and delete
> >>>>> the old node.
> >>>>>
> >>>>> -JZ
> >>>>>
> >>>>>
> >>>>> From: Mudit Verma mudit.f2004912@gmail.com
> >>>>> Reply: user@zookeeper.apache.org user@zookeeper.apache.org
> >>>>> Date: June 16, 2014 at 8:38:11 AM
> >>>>> To: user@zookeeper.apache.org user@zookeeper.apache.org
> >>>>> Subject: renaming a znode
> >>>>>
> >>>>> Hello People,
> >>>>>
> >>>>> Sorry for asking many questions these days. :)
> >>>>>
> >>>>> I am wondering if it is possible to rename a znode? I am building
> >>>>> a distributed map on top of zookeeper for special needs. From time
> >>>>> to time, I need to freeze the map without restricting write access
> to the map.
> >>>>>
> >>>>> I plan to do it by maintaining two maps:
> >>>>>
> >>>>> map_current
> >>>>> map_frozen
> >>>>>
> >>>>> all the map entries are maintained as separate children znodes
> >>>>> where key is the name of the child node and value is the value
> >>>>> stored on the child node ..
> >>>>> for example /map_current/entry1(kv)
> >>>>> /map_current/entry2(kv)
> >>>>>
> >>>>>
> >>>>> Now at some point of time, I need to iterate the map while still
> >>>>> allowing write access by other clients. While I iterate, I don't
> >>>>> want other clients to see these entries. Once I process map_frozen
> >>>>> entries I will delete them (I don't need them anymore) by just
> deleting the parent node.
> >>>>>
> >>>>> I plan to rename existing map from map_current to map_frozen and
> >>>>> create new map as map_current with empty data for further writes.
> >>>>> Other clients will continue to write new entries in map_current
..
> so on so forth ..
> >>>>>
> >>>>> Any suggestions on how can I do it efficiently.
> >>>>>
> >>>>> Thanks
> >>>>> Mudit
> >>
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message