Field of the Invention
The present invention relates in general to computers, and more particularly to scalable deduplication in which fine-grained resolution is required to enable access to small data blocks in a computing storage environment.
Description of the Related Art
In today's society, computer systems are commonplace. Computer systems may be found in the workplace, at home, or at school. Computer systems may include data storage systems, or disk storage systems, to process and store data. Large amounts of data have to be processed daily and the current trend suggests that these amounts will continue being ever-increasing in the foreseeable future. An efficient way to alleviate the problem is by using deduplication. The idea underlying a deduplication system is to exploit the fact that large parts of the available data is copied again and again and forwarded without any change, by locating repeated data and storing only its first occurrence. Subsequent copies are replaced with pointers to the stored occurrence, which significantly reduces the storage requirements if the data is indeed repetitive.
Various exemplary method, system, and computer program product embodiments for scalable data deduplication working with small data chunk in a computing environment are provided. In one embodiment, by way of example only, for each small data chunk, a signature is generated based on a combination of a representation of characters used in selecting data to be deduplicated. A c-spectrum of the small data chunk being a sequence of representations of different characters ordered by a frequency of occurrence in the small data chunk, and an f-spectrum of the small data chunk being a corresponding sequence of frequencies of the different characters in the small data chunk.
In addition to the foregoing exemplary method embodiment, other exemplary system and computer product embodiments are provided and supply related advantages. The foregoing summary has been provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
Data deduplication refers to the reduction and/or elimination of redundant data. In a data deduplication process, duplicate copies of data are reduced or eliminated, leaving a minimal amount of redundant copies, or a single copy of the data, respectively. Using deduplication processes provides a variety of benefits, such as reduction of required storage capacity and increased network bandwidth.
An approach to deduplication, based on hashing, can be schematically described as follows. The available data is partitioned into parts called chunks (e.g., Ci and Cj). These chunks may be of fixed or variable size, and the (average) size of a chunk may be small, for example, 4-8 Kilobyte (KB), up to quite large such as 16 Megabyte (MB). A cryptographically strong hash function (h) is applied to these chunks, meaning that if h(Ci)=h(Cj), it may be assumed, with very low error probability, that the chunks Ci and Cj are identical. The set (S) of different hash values, along with pointers to the corresponding chunks, is kept in a data structure (D) allowing fast access and easy update, typically a hash table or a B-tree. For each new chunk to be treated, its hash value is searched for in D, and if it appears there, one may assume that the given chunk is a duplicate, so it is not stored again, rather, it is replaced by a pointer to its earlier occurrence. If the hash value is not in D, the given chunk is considered new, so it is stored and its hash value is adjoined to the set S.
However, difference may arise based upon how the chunk boundaries are defined and in the suggested size of the chunks. The chunk size has a major impact on the performance, and, if the chunk sizes are too small, the number of different chunks may be so large as to jeopardize the deduplication approach because the data structure D might not fit into RAM, so the system might not be scalable. On the other hand, if the chunk size is chosen too large, the probability of obtaining identical chunks decreases and, in many instances, numerous chunks exist that could have been deduplicated had the chunk size been smaller, but if the chunk size is larger, many of these chunks have to be kept.
The deduplication process may also look for similar and not only identical chunks. If a similar chunk is located, only the difference is recorded, which is generally much smaller than a full chunk. This allows the use of much larger chunks than in identity based systems. Yet, for many applications, data is more fine-grained, and a more efficient deduplication process can be performed with significantly smaller chunks. For example, a simple generalization of a system in which the chunk size could be reduced from 16 MB to 8K, for example, by a factor of 2000, without changing anything else in the design, could imply a 2000 fold increase of the size of the index, from 4 GB to about 8 TB. However, this may not be assumed to fit into RAM. Moreover, keeping the definition of the notion of similarity and reducing the size of the chunks will lead to an increased number of collisions, which may invalidate the approach altogether.
In contrast, and to address the inefficiencies previously described, the mechanisms of the illustrated embodiments serve to implement the required similarity by what shall be identified as an approximate hash scheme. The main idea is that such an approximate hash function is not sensitive to “small” changes within the chunk but behaves like other hash functions as far as the close to uniform distribution of its values is concerned. As a consequence, the mechanisms may handle the set of approximate hash values as is usually performed in hash applications (using a hash table, or storing the values in a B-Tree), but detect both similar and identical blocks. If a given chunk undergoes a more extended, but still minor, update, its new hash value may be close to the original one, which suggests that in the case of a miss, the values stored in the vicinity of the given element in the hash table should be checked. Such vicinity searches are useless in a regular hash approach.
A general algorithm for storing the repository may include using a hash table H with, for example, 232 entries as a basic data structure. During the building process, each chunk C will be assigned its approximate hash value ah(C), and the index, or address of the chunk will be stored at H[ah(C)], the entry in H indexed by the hash value of the chunk. If the location in the table is not free, it may be overwritten. This may happen in case the new chunk is identical or very similar to a previously encountered chunk; in which case, it may be preferred to store the address of the more recent chunk for later reference, if needed. However, a collision may also be the result of two completely different chunks hashing to the same value, and then the pointer to the older chunk that has been overwritten will be lost.
In one embodiment, the mechanisms of the present invention apply specific transformations to data and determine a signature by means of which it will be possible to select the data to be deduplicated. The mechanisms partition the data into relatively small chunks (C) of fixed or variable length, with (average) size of about 8-16 K. Each chunk may be analyzed as to the distribution of the characters forming it and their corresponding frequencies of occurrence. The sequence of different characters, ordered by their frequency of occurrence in the chunk, is defined as the c-spectrum of C, and the corresponding sequence of frequencies defined as the f-spectrum of C. In addition, the mechanisms of the present invention consider the sequence of different character pairs, ordered by their frequency of occurrence in the chunk, and this sequence of pairs is defined as the p-spectrum of C. The suggested approximate hash function (referred to as ah(C)) will be a combination of certain elements of these spectra. In one embodiment, by way of example only, the size of the hash values may be fixed in advance, so as to exploit the space of the allocated hash table. For example, it may be decided that the table will have about 4 billion entries, which corresponds to a hash value of 32 bits. The chosen elements of the spectra, and more precisely, only a part of the bits of the chosen elements of the spectra, may be arranged appropriately by shifting them to the desired positions and then performing a logical XOR operation on the bit strings. In one embodiment, an approximate hash function is generated based on a combination of characters and their frequencies. The approximate hash function is used to select the data to be deduplicated.
Turning now to
To further illustrate the mechanisms of
The elements ai may be partitioned into blocks. The mechanisms may gather several characters together and treat them symmetrically, because it may often happen that frequencies of certain characters may be equal or very close. In such a case, a small perturbation may change the order of the characters and yield a completely different hash value, contrarily to the objective of the approximate hash function being immune to small changes. The ASCII representation of all the elements in a block may be aligned with the same offset and an XOR operation may be performed for the elements so that the internal order within the blocks may be arbitrary.
In one embodiment, the mechanisms, for defining the blocks, inspects the sizes di of the gaps between adjacent frequencies, di=fi−fi+1, for i=1, . . . , n−1. However, sorting the gaps according to di alone may strongly bias the definition of the gaps towards inducing blocks with single elements, since the largest gaps may tend to occur between the largest values. The sizes of the gaps are normalized by dividing by an appropriate weight and apply harmonic weights 1/i for i≧1 according to Zipf's law. The gaps are therefore sorted with respect to i×di=i(fi−fi+1), which has the advantage or requiring only integer arithmetic. The l−1 (l represents the number of blocks) gaps with largest weights are chosen (for example setting l=10) and the l sets of consecutive elements delimited by the beginning of the sequence, these l−1 gaps, and the end of the sequence, are defined as the blocks.
In one embodiment, the number of blocks is l=10, and the size of the last block is truncated, if necessary, to include at most 10 characters. There may also be lower bounds on the number of occurrences of a character to be considered, such as (15) and on the size di of a gap (5). If after these adjustments, the number of blocks in a given chunk is smaller than 10, a different layout may be chosen that is adapted to the given number of blocks. The layout in
Moreover, each data block taken from the c-spectrum may be of size 8 bits, using the full ASCII representation, except for the first block of the most frequent characters, for which the first (leftmost) 2 bits may be pruned. Each of these blocks may be shifted, and more specifically, the first block may be shifted by 26 bits to the left (e.g., left justified in the 32-bit layout) and the next block may be shifted 24 bits, then 18, 16, 13, 11, 9, 7, 5 and 3 bits. The straight and reversed representations of the characters may be alternating.
The elements of the f-spectrum may be incorporated into the signature as described below. For each frequency value, which may be an integer between 1 and 8192, the mechanisms consider first the frequency value as a standard binary representation (e.g., in 16 bits), and extend this string by 8 additional zeros to the right. Thus, the mechanisms assign to each frequency fi a 24-bit string Fi, for example, if fi=5, then Fi=00000000 00000101 00000000. The mechanisms define Di as the substring of Fi of length 3 bits, starting at the position immediately following the most significant 1-bit, for the above example 00000000 00000101 00000000, the bits forming Di are emphasized. By way of illustration, another example with a value of more than 8 bits is given by considering fi=759, 00000010 11110111 00000000 then displays both Fi and Di. (emphasis added). In one embodiment, the size of all the elements is chosen as 3 bits, except the first, which is only of length 2 bits, and this in addition to the lower bound of 15 of the values in the f-spectrum implies that the right padding with zeros is never needed. However, other embodiments may lower the bound and increase the bit-size of the values. The offsets in bits of these elements are as indicated: 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6 and 6, with the first (largest) frequency being depicted as the lowest element
The block of the p-spectrum of C may be of length 12 bits and may be placed left justified in the layout. In one embodiment, the p-spectrum of C may be defined by ordering the pairs by non-increasing frequencies and consider those indexed as 5, 6, 7, 8 and 9 (i.e. 5th through 9th block) in this ordering. The reason for not choosing the most frequent pairs as performed for the characters is that their distribution is much more biased, with the pairs (0,0) and (255,255) appearing as the most frequent in an overwhelming majority of the cases we tested.
For each of the 5 pairs, the following bit string may be constructed. Given the 2 bytes A=a7a6a5a4a3a2a1a0 and B=b7b6b5b4b3b2b1b0, the mechanisms may rotate A cyclically to the left by 3 bits and B cyclically to the right by 3 bits. The bytes may be aligned so that the rightmost 4 bits of A overlap with the leftmost 4 bits of B and then a XOR logic operation may be performed on the bit strings. Thus, the 12 resulting bits may now be illustrated as a4,a3,a2,a1,a0^b2,a7^b1,a6^b0a5^b7,b6,b5,b4,b3, where the notation a^b is used for a XOR b. The most and least significant bits of both A and B are in the overlapping part, so if their distribution is biased, they have an additional chance to correct the bias by the additional XOR logic operation. Finally, a XOR logic operation may be performed on all the elements of the layout yielding a 32 bit string, representing a number between 0 and 232−1 that may act as the hash value of the given chunk C.
By way of example only, and to illustrate the performance of the signature to show the uniformity of distribution, a subset of an Exchange database of about 27 GB has been chosen and a file of about 5 GB. In the chosen embodiment, the chunk was of variable length size. The boundary of a chunk was defined by applying a simple Rabin-Karp rolling hash on the d rightmost bytes of the chunk under consideration. If this hash value equals some predefined constant c, the chunk was truncated after these d bytes; otherwise, a byte was adjoined and the test with the rolling hash was repeated. In the chosen embodiment, d=25, c=2718 and the hash function was RK(x)=x modP where RK is the Rabin-Karp rolling hash value, x is a variable, P=248−257 is a prime number, and mod stands for the modulus function, defined by A mod B is the remainder of the division of A by B, where both A and B are integers, or in mathematical notation:
A mod B=A−B×└A/B┘.
To avoid extreme values for the chunk lengths, a lower limit of 2K and an upper limit of 64K are imposed as an example. The average size of a chunk was then about 12K on the test databases.
In step 785, the method 700 then starts a loop processing a single pair pi in each iteration. u and v are defined as the characters forming the pair pi. In step 786, a string w of length 12 bits is formed as function of the ASCII representation of u and v. More specifically, u is cyclically rotated left by 3 bits, v is cyclically rotated right by 3 bits, and the result w is obtained by applying a logical XOR operation on the rotated strings, after having shifted u by 4 bits to the left. The method 700 will then execute sig←sig XOR shift(w,pshift[K,j]) (step 787), which performs a logical XOR operation of the current value stored in sig with the 12 bits of the value w that have been shifted into a position determined by the index j of the cluster and the total number of blocks K. The exact amounts of these shifts are given in the table pshift[K,j], which is an external parameter of the signature scheme (not depending on a specific chunk), and are given in
a) For cshift: the index j of the block of characters;
b) For fShift: the index i of the frequency;
c) For pshift: the index pnum of the number of pairs used (1 to 3)
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
While one or more embodiments of the present invention have been illustrated in detail, the skilled artisan will appreciate that modifications and adaptations to those embodiments may be made without departing from the scope of the present invention as set forth in the following claims.
In particular, changing any of the constants Kmin,Kmax,P,s,Const that appear in step 604 of
This Application is a Continuation of U.S. patent Ser. No. 13/929,262, filed on Jun. 27, 2013, now U.S. Pat. No. 9,075,842, which is a Continuation of U.S. patent application Ser. No. 13/534,361, filed on Jun. 27, 2012, now U.S. Pat. No. 8,478,730, which is a Continuation of U.S. patent application Ser. No. 13/236,552, filed on Sep. 19, 2011, now U.S. Pat. No. 8,484,170.
Number | Name | Date | Kind |
---|---|---|---|
3694813 | Loh | Sep 1972 | A |
3717851 | Cocke et al. | Feb 1973 | A |
4192010 | Kerner | Mar 1980 | A |
4359286 | Barnes | Nov 1982 | A |
4516246 | Kenemuth | May 1985 | A |
4672679 | Freeman | Jun 1987 | A |
5276741 | Aragon | Jan 1994 | A |
5469354 | Hatakeyama et al. | Nov 1995 | A |
5870750 | Oyama et al. | Feb 1999 | A |
6026198 | Okada | Feb 2000 | A |
6128412 | Satoh | Oct 2000 | A |
6215906 | Okada | Apr 2001 | B1 |
6304601 | Davison | Oct 2001 | B1 |
6542644 | Satoh | Apr 2003 | B1 |
7016908 | Kataoka | Mar 2006 | B2 |
7259751 | Hughes et al. | Aug 2007 | B2 |
7310055 | Odagiri | Dec 2007 | B2 |
7516130 | Ren et al. | Apr 2009 | B2 |
7689633 | Li et al. | Mar 2010 | B1 |
7733247 | He et al. | Jun 2010 | B1 |
7777651 | Fallon et al. | Aug 2010 | B2 |
7783889 | Srinivasan | Aug 2010 | B2 |
7831531 | Baluja et al. | Nov 2010 | B1 |
7882083 | Kataoka | Feb 2011 | B2 |
8015162 | Henzinger | Sep 2011 | B2 |
8055599 | Werth | Nov 2011 | B1 |
8099415 | Luo et al. | Jan 2012 | B2 |
8121993 | Blount et al. | Feb 2012 | B2 |
8141149 | Henry | Mar 2012 | B1 |
8156306 | Raizen et al. | Apr 2012 | B1 |
8209334 | Doerner | Jun 2012 | B1 |
8595196 | Kataoka | Nov 2013 | B2 |
8898114 | Feathergill et al. | Nov 2014 | B1 |
20020078062 | Kataoka | Jun 2002 | A1 |
20040205257 | Hughes et al. | Oct 2004 | A1 |
20050122240 | Kim et al. | Jun 2005 | A1 |
20060106769 | Gibbs | May 2006 | A1 |
20060171588 | Chellapilla et al. | Aug 2006 | A1 |
20060253438 | Ren | Nov 2006 | A1 |
20070096953 | Odagiri | May 2007 | A1 |
20070130188 | Moon et al. | Jun 2007 | A1 |
20070156749 | Levin | Jul 2007 | A1 |
20070174209 | Fallon et al. | Jul 2007 | A1 |
20070282832 | Herley et al. | Dec 2007 | A1 |
20080065630 | Luo | Mar 2008 | A1 |
20080167881 | Haas | Jul 2008 | A1 |
20080281811 | Korst | Nov 2008 | A1 |
20090234826 | Bidlack | Sep 2009 | A1 |
20090271454 | Anglin | Oct 2009 | A1 |
20090287839 | Fallon et al. | Nov 2009 | A1 |
20090300321 | Balachandran et al. | Dec 2009 | A1 |
20100125553 | Huang et al. | May 2010 | A1 |
20100188273 | He et al. | Jul 2010 | A1 |
20100235332 | Haustein et al. | Sep 2010 | A1 |
20100254615 | Kantor et al. | Oct 2010 | A1 |
20100306148 | Johnston | Dec 2010 | A1 |
20100306412 | Therrien et al. | Dec 2010 | A1 |
20110099200 | Blount | Apr 2011 | A1 |
20110099351 | Condict | Apr 2011 | A1 |
20120011115 | Madhavan et al. | Jan 2012 | A1 |
20120016882 | Tofano | Jan 2012 | A1 |
20120066214 | Nelke et al. | Mar 2012 | A1 |
20120089579 | Ranade et al. | Apr 2012 | A1 |
20120089775 | Ranade et al. | Apr 2012 | A1 |
20120303663 | Asikainen et al. | Nov 2012 | A1 |
20140059075 | Kataoka | Feb 2014 | A1 |
Number | Date | Country |
---|---|---|
101630290 | Jan 2010 | CN |
101908077 | Dec 2010 | CN |
102185889 | Sep 2011 | CN |
04280517 | Oct 1992 | JP |
2005333233 | Dec 2005 | JP |
2010114856 | Oct 2010 | WO |
Entry |
---|
Klein et al., “Huffman Coding with Non-Sorted Frequencies”, in Proceedings of the Prague Stringology Conference, 2008, 9 pages. |
“A Low Cost Worm Detection Technique Based on Flow Payload Similarity” 4 pages, In the Third International Conference on Web Information Systems and Technologies (WEBIST 2007). |
Ogawa et al., “A New Character-based Indexing Method using Frequency Data for Japanese Documents” pp. 121-129, 1995. |
Musa et al., “An Efficient Text Compression Technique Based on Using Bitwise Lempel-Ziv Algorithm” pp. 6564-6569 Australian Journal of Basic and Applied Sciences. |
Lam et al., “Chinese Document Indexing Based on a New Partitioned Signature File: Model and Evaluation” pp. 584-597, Journal of the American Society for Information Science and Technology, May 2001, col. 52, No. 7. |
Gagie et al., “Dynamic Shannon Coding” 6 pages IEEE 2005. |
Bhagwat et al., “Extreme Binning: Scalable, Parallel Deduplication for Chunk-based File Backup” 9 pages, Proceedings of the 17th IEEE/ACM International Symposium on Modeling, Analysis and Simulation of Computer and Telecommunications Systems (MASCOTS'2009), Sep. 2009. |
Lu et al., “Frequency Based Chunking for Data De-Duplication” pp. 287-296, 2010. |
Narang et al., “Real-time Approximate Range Motif Discovery & Data Redundancy Removal Algorithm” 12 pages, EDBT 2011, Mar. 22-24, 2011, ACM 978-1-4503-0528-1/11/0003, Uppsala, Sweden. |
Number | Date | Country | |
---|---|---|---|
20150286443 A1 | Oct 2015 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13929262 | Jun 2013 | US |
Child | 14733507 | US | |
Parent | 13534361 | Jun 2012 | US |
Child | 13929262 | US | |
Parent | 13236552 | Sep 2011 | US |
Child | 13534361 | US |