BIND 10 #2101: [meta] memory-efficient version of InMemory Zone

BIND 10 Development do-not-reply at isc.org
Wed Aug 22 06:26:46 UTC 2012


#2101: [meta] memory-efficient version of InMemory Zone
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:
  jinmei                             |                Status:  new
                       Type:  task   |             Milestone:  Next-Sprint-
                   Priority:         |  Proposed
  medium                             |            Resolution:
                  Component:  data   |             Sensitive:  0
  source                             |           Sub-Project:  DNS
                   Keywords:         |  Estimated Difficulty:  meta
            Defect Severity:  N/A    |           Total Hours:  0
Feature Depending on Ticket:         |
  scalable inmemory                  |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------
Description changed by jinmei:

Old description:

> This feature consists of some other subfeatures:
>
> - Updates to libdns++ `LabelSequence`: #2086, #2087
> - Introduce `MemorySegment`: #2088
> - `RBTree` updates so it will be more memory efficient, using offset
>   pointer and provide other support methods: #2089, #2090, #2091,
>   #2092, #2093
> - Memory efficient `Rdata` encoding: #2094, #2095, #2096
> - Introduce `RdataSet` and define new `RRset`: #2097, #2098
> - `InMemoryZone` client/finder update: #2107, #2108, #2109, #2110, #2218
> - Update `ZoneTable`: #2100
>
> General notes: when we complete this, we'll have a slightly different
> version of the proposed design
> http://bind10.isc.org/wiki/InMemoryZoneDesign
> - It will encode names in RDATA as raw data for `LabelSequence`, not a
>   pointer to the corresponding tree node
> - As a result, it doesn't support additional section shortcut
>
> I thought the above tasks are already pretty big, so it's probably
> better to complete a suboptimal but workable version first.
>
> It's unlikely that we'll revise the existing in-memory data source
> implementation incrementally without making it unworkable for the
> moment.  So, realistically, we should implement these while keeping
> the current version intact (using a slightly different name or
> separate subdirectory, etc), and when everything is done, replace the
> existing one with the new one (that itself will probably have to be a
> separate task).
>
> Also, we may want to rename `RBTree` more generic using this
> opportunity, such as `DomainTree` so that if and when we want to
> change the internal tree algorithm from RB tree the class name won't
> be affected.

New description:

 This feature consists of some other subfeatures:

 - Updates to libdns++ `LabelSequence`: #2086, #2087
 - Introduce `MemorySegment`: #2088
 - `RBTree` updates so it will be more memory efficient, using offset
   pointer and provide other support methods: #2089, #2090, #2091,
   #2092, #2093
 - Memory efficient `Rdata` encoding: #2094, #2095, #2096
 - Introduce `RdataSet` and define new `RRset`: #2097, #2098
 - `InMemoryZone` client/finder update: #2107, #2108, #2109, #2110, #2218
 - Update `ZoneTable`: #2100
 - Integration: #2219 (when all others are done)

 General notes: when we complete this, we'll have a slightly different
 version of the proposed design
 http://bind10.isc.org/wiki/InMemoryZoneDesign
 - It will encode names in RDATA as raw data for `LabelSequence`, not a
   pointer to the corresponding tree node
 - As a result, it doesn't support additional section shortcut

 I thought the above tasks are already pretty big, so it's probably
 better to complete a suboptimal but workable version first.

 It's unlikely that we'll revise the existing in-memory data source
 implementation incrementally without making it unworkable for the
 moment.  So, realistically, we should implement these while keeping
 the current version intact (using a slightly different name or
 separate subdirectory, etc), and when everything is done, replace the
 existing one with the new one (that itself will probably have to be a
 separate task - which is #2219).

 Also, we may want to rename `RBTree` more generic using this
 opportunity, such as `DomainTree` so that if and when we want to
 change the internal tree algorithm from RB tree the class name won't
 be affected.

--

-- 
Ticket URL: <http://bind10.isc.org/ticket/2101#comment:7>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list