text:
The Product Backlog is a prioritized list of everything that might be included in a product. The Product Owner creates, maintains, and regularly re-orders the Product Backlog. The Product Owner uses the Product Backlog to adapt to emerging requirements, customer feedback, and market changes.
The Product Backlog is the manifestation of the vision and the business case for the product. The backlog is made up of Product Backlog Items (PBIs). PBIs can be anything from market requirements, to use cases, to specifications. However, the best practice is User Stories. Whatever the team decides on, it is critical to represent the end-user's perspective.
As Jeff explains in the video below, PBI's at the top of the Product Backlog should be refined and immediately actionable. Items further down the backlog need less definition and can reflect bigger ideas. These larger chunks will need to be broken down into smaller pieces as they approach the top of the Product Backlog.
The Product Backlog is a living document. At any time it is the definitive list of everything that could possibly be included in the project. There is only one Product Backlog and the Product Owner is the only person responsible for it. This is true across multiple teams and even a portfolio of products. (See Scrum at Scale.) The Product Owner must have the knowledge and authority to grow and help execute the project over its lifetime. The Product Owner decides when enough value has been delivered to ship the product.
More features can always be added to project. The Product Owner must decide if the Business Value of those features justifies the effort. Good prioritization of the Product Backlog will generate at least 20% more business value and directly affect revenue. Companies should hire the best Product Owner they can find and dedicate them to the Team full-time. (For a more detailed explanation of this research see "Software by Numbers: Low-Risk, High Return Development" by Mark Denne and Jane Cleland-Huang.)
Next Suggested Topic: The Sprint
Back to the Framework


text:
Former Mississippi Gov. Bill Waller Sr., a 85-year-old lawyer and politician, died Wednesday at St. Dominic Hospital in Jackson.
- Filed Under
Mississippians remembered former Gov. Bill Waller Sr. Wednesday as a man who made history - first as a prosecutor, then as a governor.
The 85-year-old lawyer and politician was admitted Tuesday night to St. Dominic Hospital, where he died at 12:41 p.m. Wednesday of heart failure after some heart problems, his family said.
"Mississippians have lost a great leader who launched an era of change that continues to this day," Gov. Haley Barbour said. "Bill Waller began a transition from which our citizens have benefited, and his 'Straight Ahead' style helped our state move forward." ...

subset: commoncrawl


text:
Carlton Complex Fire
View Single Post
what broke now
Petroleum Brother
Joined: Jul 2011
Location: seattle
Oddometer: 1,483
Originally Posted by
All the concrete was badly damaged, fire cracked and spalled. Adjuster wrote it all off. We start with a clean slate.
I'm rather excited about this prospect. I work as a lead carpenter in our area. I've gotten to be involved with some rather nice houses over the past couple of decades. Here's one recent example...
Cast Architecture
Now I probably won't build this modern/sterile, after all, I live in the Methow and a Met-house has got to have some funk! I get to play on a house of my own! Sahweet.
Our plan is to rebuild the barn this fall and work on the plans/premitting for the house, this winter. Start up in spring...
That is a great opportunity to build your own. If the insurance payout is favorable, you might beat the number and have some dough left over since you are the gc. Good luck with permitting, maybe they will go easy on residents after the disaster.
Small world, I did a project with Cast in Seattle before I retired.
what broke now
View Public Profile
Find More Posts by what broke now


text:
That is not to say that the focus on Cohle and Hart does not spawn two compelling performances.
So she was stuck, for a goodish bit of time, with a load of red-faced paunches who thought she was the spawn of hell.
This idea is really the spawn of Mark Levin, the wingnut radio host, who has (of course) written a book about it.
early 15c., from Anglo-French espaundre, Old French espandre "to spread out, pour out," from Latin expandere (see expand). The notion is of a "spreading out" of fish eggs released in water. The meaning "to engender, give rise to" is attested from 1590s. Related: Spawned; spawning.
early 15c., from spawn (v.); figurative sense of "brood, offspring" is from 1580s.
operating system
To create a child process in a multitasking operating system. E.g. Unix's fork system call or one of the spawn() library routines provided by most MS-DOS, Novell NetWare and OS/2 C compilers - spawnl(), spawnle(), etc.


text:
|La Quinta Inns & Suites Flint Hill properties are listed below. Search for cheap and discount La Quinta Inns & Suites hotel rates in Flint Hill, VA for your upcoming individual or group travel. We list the best La Quinta Inns & Suites Flint Hill hotels & motels so you can review the Flint Hill La Quinta Inns & Suites hotel list below to find the perfect place.
Our service will also provide discounted Flint Hill, VA hotels/lodging that have similar star quality of La Quinta Inns & Suites.
Next: Show All Available Comparable Hotels with Pricing >


text:
Used Hyundai Santa Fe Reviews
Autobytel has reviews that will walk you around a car, give you a peek under the hood and get you behind the wheel with an industry expert. Browse by category or get into a specific brand to see how well a car does when put to the test.
Showing 7 of 18 reviews for this vehicle
2013 Hyundai Santa Fe Sport: First ImpressionsAll-new Mid-size Crossover Aims High and Delivers
The short story here is a simple one: Hyundai's relentless push up-market continues with the 2013 Hyundai Santa Fe Sport,...
2013 Hyundai Santa Fe Sport Road Test and Review
Hyundai may think they've invented the crossover sport-utility vehicle, or CUV, but that honor stretches back to automaker AMC. Purchased by Chrysler in 1987, AMC offered...
2013 Hyundai Santa Fe Redesigned With More Power, Improved Fuel Efficiency
Last year, the Hyundai Santa Fe got a little lost in the shuffle when it came to the competitive midsize SUV class. However, a full redesign for the...
New 2010 Hyundai Santa Fe Gives More Bang for Your Buck
Hyundai has been building a reputation for long-term value and reliability for quite some time. Staying true to this philosophy, the new 2010 Hyundai Santa Fe delivers a...
Kelley Blue Book ® - 2009 Hyundai Santa Fe OverviewVehicle Overview from Kelley Blue Book
Overview: EDITORS' NOTES The Hyundai Santa Fe is a unibody SUV made for tackling the urban jungle, not...
2007 Hyundai Santa Fe First DriveHyundai's got a stylish new attitude
Hyundai Santa Fe – First Drive: Choice is a good thing in almost any situation, but especially when you're shopping for a car. The more models you have to...
2007 Hyundai Santa Fe PreviewAn all-new Santa Fe with room for seven
It's hard to believe, but the past two decades have been witness to the creation of the web browser and, in the automotive realm, the growth of a once...


text:
Bucs Stun Steelers With Last-Second, 27-24 Upset at Heinz Field
Bucs Steelers Recap - The Bucs defeated the Steelers 27-24 at Heinz Field Sunday on a stellar last-second touchdown from Mike Glennon to Vincent Jackson
Bucs Cut Former Gators Safety Major Wright
In one of the more surprising moves of NFL roster cuts, the Tampa Bay Buccaneers have parted ways with former Florida Gators strong safety Major Wright
Bucs Safety Mark Barron Rises to the Occasion with Big Training Camp
Tampa Bay Buccaneers safety Mark Barron has risen to the occasion on an early challenge issued by head coach Lovie Smith at the beginning of training camp
Bucs Training Camp: Defense Stepping Up with Turnovers
The Tampa Bay Buccaneers have made great strides in training camp this week, including eight turnovers in Monday's practice. While the offense may have gotten the edge just a bit in Tuesday's practice, this type of competitive balance is a
VIDEO: Bucs Training Camp Highlights of Day 5
For as dull as Monday's training camp practice was, Wednesday's evening practice was full of highlights. The team installed its red zone offense and defense, meaning there were a lot of opportunities for impact plays. Sports Talk Florida Bucs
Bucs' Mark Barron Reveals He Had Surgery on His Knee in January
Tampa Bay Buccaneers strong safety Mark Barron talks about his interception on the opening weekend of training camp, his knee injury and Lovie Smith's defense
Tampa Bay Buccaneers Training Camp: Day 2 Notebook
Sports Talk Florida Bucs Insider Jenna Laine recaps some highlights from day 2 of Bucs Training Camp, with top plays, who stood out and who disappointed
Carl Nicks Misses Reporting Day, Goldson and Barron to Practice Tomorrow
Tampa Bay Buccaneers Pro Bowl left guard Carl Nicks did not report to training camp Thursday.
Bucs Safety Major Wright: 'Every Day Our Expectation is to Take Away the Ball'
Sports Talk Florida Bucs Insider Jenna Laine talks to Major Wright about everything from slushies to his reunion with Lovie Smith and forcing turnovers
Tampa Bay Buccaneers Minicamp Day 1 Notebook
The Tampa Bay Buccaneers held their first mandatory minicamp practice Tuesday afternoon. Players practiced in shorts and shells for approximately 2.5 hours with temperatures around 90 degrees. Here are some highlights: Carl Nicks eyes training camp for return Pro Bowl left


text:
(Save 58%)
What are Rakuten Super Points™?
Get rewarded when you shop! Earn 1 point per dollar spent. That's like getting cash back on every purchase. Easy to see matured points in checkout. Use points just like cash.Learn More
More Buying Options
Seller Information
|ECTACO Farsi (Persian) - English - Farsi (Persian) Audio PhraseBook PB-Fa B-3, is a talking travel electronic translator. It instantly translates 14,000 travel-oriented phrases divided by activity and speaks the translation aloud. Featuring natural English and Farsi (Persian) pronunciation as recorded by native speakers it is easily understood by your listeners. You simply choose the appropriate phrase and the loudspeaker will pronounce its translation. This device substitutes for an interpreter in most standard situations, such as when registering at a hotel, shopping, visiting a bank and more. In the Phrases mode the application shows full sentences, some of which have changeable parts. Its powerful search functions allow you to quickly find what you need, exactly when you need it.To make it even more useful, there is an entertaining FlashCards word game included. ECTACO Partner B-3 will help you enlarge your vocabulary quickly and advance considerably in learning a foreign language. We have also included many practical organizer features: an address book, diary, audio reminders, ToDo Book, currency and metric converters, local and world time with map illustration. Bilingual interface. We have even included an MP3 music player, additional MMC required, to provide entertainment during your travels. ECTACO English Farsi (Persian) Audio PhraseBook PB-Fa B-3 will serve you as a comprehensive phrasebook, personal organizer, and a music player. Furthermore, this remarkable translator is extremely customizable. It even allows you to add additional languages if needed. Two input methods: on-screen keyboard and a high-resolution touch-sensitive handwriting area. The package includes: Partner B-3 Phrasebook, MMC card with linguistic content, User Manual, USB cable, connecting cable, AAA batteries. The B-3 comes with a small, stylish, self-amplified loudspeaker LS-101 with neck strap. 1 year international warranty. A CD-ROM with 20 software dictionaries is included as a free gift!
View all buying options for ECTACO Partner English <-> Persian (Farsi) Talking Electronic Dictionary EFa B-3
45-Day RETURNS
+ $6.74 shipping
Shipping: Usually ships in 1 to 2 business days
Condition: Brand New
+ $6.74 shipping
Shipping: Usually ships in 1 to 2 business days
Condition: Brand New
About the Seller
Seller Description
Focus Camera, Inc. is a nationwide specialty on-line retailer, as well as a brick-and-mortar retail store, operating in the same New York neighborhood location for over 40 years. We have taken our consumer-oriented philosophy that has served us well in our local community, and expanded it to serve customers nationwide. Customer Service is our Number One Priority! We don't just deliver products - We keep our customers coming back again and again. Our customers are our investment. "Treat every customer as if they sign your paycheck...because they do." This has been our credo, and it is for this reason that many of our orders are from repeat customers. Our best advertisers are our satisfied customers, more than 400,000 strong and growing daily. Our prices are very competitive. We sell only top-quality merchandise, and our customer service is second to none. Join our family of satisfied customers, and you will be glad you did. Why take risks in dealing with unknown retailers - when you can buy from a trusted source with an excellent reputation spanning almost two generations! If you are satisfied with your purchase and our performance, tell your friends. If you have any issues, please contact our customer service via email at email@example.com or via phone by dialing 1-800-221-0828, Mon. - Thurs. 9:00am to 5:00pm EST and on Friday 9:00am to 2:00pm EST. We will work hard to address your concerns, so that we may continue to earn your ongoing loyalty.
Marketplace Guarantee ClaimBuyers should receive Marketplace items in the condition that they were listed. We ask buyers to first contact the seller to give them a chance to address any issues. If the seller does not respond or if the issue is not addressed to the customer's satisfaction buyers can rely on our Rakuten.com Marketplace Guarantee Claim which, covers the first $750 of every purchase... read more
Returns Policy
Return or Replacement Policy: If you are not satisfied with your purchase, you may return it (see exceptions in Paragraph 'g' below) within 14 days of receipt, for a refund, or a replacement - subject to the following:
a) Contact Focus Camera to receive a Returned Merchandise Authorizatio...read more
a) Contact Focus Camera to receive a Returned Merchandise Authorizatio...read more
Shipping Info
We ship via UPS, Fedex, and USPS Postal Service. APO, FPO, and PO Box shipments are only via USPS. Shipments to APO/FPO destinations may take several weeks to arrive, as per USPS delivery guidelines.
Standard Shipping time is usually 2-4 business days to the East Coast and/or the Midwest,...read more
Standard Shipping time is usually 2-4 business days to the East Coast and/or the Midwest,...read more
Recent Feedback


text:
Premier Program JOIN FREE!
Premier Members Enjoy:
Exclusive pricing and volume discounts
3% BACK on every purchase
Fast & FREE shipping on thousands of items
Save time with your account manager
Over 7 million products to choose from
Quick & easy PO terms for qualifying accounts
Buying for a business, school, or organization?Save even more with our FREE Premier Program for business professionals. CONTINUE
Safco Products Company Vertical Desktop Sorter
Safco Products Company Vertical Desktop Sorter
Additional Documents
Weights & Dimensions
|Material: Wood
|Color: Brown
|Country of Manufacture: Taiwan, Province of China
About the ManufacturerSafco Products Company, a division of Liberty Diversified International, was founded over 40 years ago. Since then, Safco has grown to be a leading provider of organization and comfort enhancing products for the workplace. Their product offering ensures high quality, up market design, at mid-market prices and surrounded by remarkable service.
Today, they are proud to offer over 2,200 premier products that have been designed to fit the needs of individuals and the way they work, while meeting the needs for organization in the workplace, home, school, or where ever they work.
Safco Products Company Vertical Desktop Sorter
Still have questions about this product? We're here to help
Customer Reviews
|5 star
|4 star
|3 star
|2 star
|1 star
Great product! Matches the description!
Linda from Grand Isle, VT – Verified Buyer
I am a jeweler that has several types of stones and beads. I store them in low profile containers and found the convience of having narrow slots helps me to better utilize space. I was stacking two containers in each large slot of another document holder but found that stacking them was not the best option. This product is exactly as expected!
best price anywhere, great product
Tiffiny from Bakersfield, CA – Verified Buyer
Exactly the same as all the other big stores offer (office depot, office max) but for a MUCH better price. I think I saved $40! Easy to assemble. Looks nice. Matched my cherry wood colored HON brand office furniture perfectly.
Vertical Desktop Sorter
Adele from Bartlesville, OK – Verified Buyer
I ordered this, with some trepidation, to help organize my cluttered desk. I wasn't sure I could assemble this myself but decided to try. Followed instructions explicitly and did okay except I damaged the sides of the unit a little when trying to get the top flush. Directions did not say to insert the pre-glued pegs as far as they would go, but I found this was absolutely necessary. One word of warning--the sides and top are not sturdy enough to hammer very much, even with cushioning and a rubber mallet. Having said all this, I like the many storage tiers. Wish the shelves would have been sprayed to match the cherry exterior. It fits the space I had quite well.
OUR SKU # SF5254Vertical Desktop Sorter is also sometimes listed under the following manufacturer numbers: 9419CY


text:
Housing Chief Named
The Bloomberg administration tapped Mathew Wambua, a city housing official, to succeed Rafael Cestero as commissioner for the Department of Housing Preservation and Development.
Mr. Wambua, 40 years old, is an executive vice president at the city's Housing Development Corp., an agency that finances new development of below-market-rate housing. He previously worked in City Hall as a senior policy adviser.
His appointment comes as new construction of housing remains slow and as countless owners who bought apartment buildings in 2006 and 2007 in low-income neighborhoods are now losing buildings to lenders.
Mr. Cestero said in January that he was leaving to take a job with housing developer L&M Development Partners. As HPD commissioner, he was well received by housing advocates and among other city officials, as he realigned the city's affordable housing creation and preservation plan to deal with changes brought by a souring economy.
Write to Eliot Brown at email@example.com


text:
[Verse 1]
What's been happening in your world?
What have you been up to?
I heard that you fell in love, or near enough
I gotta tell you the truth (yeah)
I wanna grab both your shoulders and shake baby
Snap out of it (snap out of it)
I get the feeling I left it too late but baby
Snap out of it (snap out of it)
If that watch don't continue to swing
Or the fat lady fancies having a sing
I'll be here
Waiting ever so patiently for you to
Forever isn't for everyone
Is forever for you?
It sounds like settling down
Or giving up
But it dont sound much like you girl
Under a spell you're hypnotized (ooh)
Darling how could you be so blind (snap out of it) (x2)
- 9. Why'd You Only Call Me When You're High?
- 10. Snap Out Of It
- 11. Knee Socks


text:
Pay in Race for Life sponsorship
Pay in your money
If you have a JustGiving page for your 5k, 10k, Pretty Muddy®, Half or full Marathon event, the money you raise is automatically sent to Cancer Research UK for you, so there's nothing more you need to do.
If you don't have a JustGiving page, you can pay in the money you have raised for your Race for Life event using our online form.
Alternatively, you can call us on 0300 123 0770 to pay with your credit/debit card or send a cheque, payable to "Cancer Research UK" to Race for Life, PO Box 1579, Oxford, OX4 9HX.
Don't forget to send in your sponsorship form as we need your name and address so we can claim Gift Aid. This can add at least an extra 25% to every donation at no extra cost to you or your sponsors.
Under 18s: unfortunately, for legal reasons, you cannot pay in your sponsorship using our online form. If you are under 18, please pay by post or phone our hotline on 0300 123 0770.


text:
1. Heat 3-4 tablespoons of oil in a pan for 5 minutes.
2. In a bowl, add the flour, salt and pepper and mix it all together.
3. Roll the cut heart pieces into the flour and then put into the oil.
4. Let the meat brown for 3 minutes each side.
5. Plate and serve as a an appetizer with hot buttered toast.


text:
All Blog Posts Tagged 'blower' - Home Energy Pros 2015-07-07T08:57:01Z http://homeenergypros.lbl.gov/profiles/blog/feed?tag=blower&xn_auth=no New Energy Code in Massachusetts tag:homeenergypros.lbl.gov,2014-10-08:6069565:BlogPost:167893 2014-10-08T13:56:48.000Z Everblue Training http://homeenergypros.lbl.gov/profile/everblue
In July 2013, the State Board of Building Regulations and Standards (BBRS) voted to adopt the 2012 International Energy Conservation Code (2012 IECC) and ASHRAE 90.1-2010 with MA amendments as the new baseline energy code. The BBRS allowed for the new regulations to run concurrently with the current energy regulations until July 1, 2014. During that time, either set of energy regulations could be used when applying for…

In July 2013, the State Board of Building Regulations and Standards (BBRS) voted to adopt the 2012 International Energy Conservation Code (2012 IECC) and ASHRAE 90.1-2010 with MA amendments as the new baseline energy code. The BBRS allowed for the new regulations to run concurrently with the current energy regulations until July 1, 2014. During that time, either set of energy regulations could be used when applying for a building permit. Now, the new regulations must be used when applying for a building permit. It's an important time for builders, general contractors, and HVAC technicians to solidify their knowledge of the 2012 IECC energy code and duct leakage testing.

According to the Department of Energy, energy cost savings for Massachusetts resulting from the state updating its commercial and residential building energy codes in accordance with federal law are significant, estimated to be on the order of nearly $144 million annually by 2030.

What This Means for Home Performance Contractors

In Massachusetts, all new construction is required to meet the 2012 IECC thresholds of 4 CFM per 100 ft2 of CFA for total leakage, and it must be tested and verified at both rough and finish. The MA website indicates that a certified HERS Rater or BPI-certified duct testing individual must do the testing.

Because the new energy code does not require third-party verification, many HVAC business owners are pursuing RESNET HERS Certification and/or a BPI duct leakage certification to meet this requirement.

Everblue provides residential energy efficiency training for home performance contractors in Massachusetts:

Our BPI Infiltration and Duct Leakage (IDL) Certification provides a basic introduction to blower door and duct blaster testing. This two-day training consists of online webinar training, hands-on field training with equipment, and a field exam. Since we launched the BPI IDL training in August 2014, we've had a 100% pass rate among students on the field exam.

Our RESNET HERS Rater training and certification package provides a more thorough analysis of residential energy auditing, including building science education, combustion safety, and on-going mentorship. This package also includes training specific to 2012 IECC concepts.

Take a look at our course schedule or give us a call at 800-460-2575 if you have questions about this legislation.
 0.72 ach50 Before Drywall - This Home is already 90% Tighter than Energy Code tag:homeenergypros.lbl.gov,2013-04-15:6069565:BlogPost:114354 2013-04-15T14:30:00.000Z Chris Laumer-Giddens http://homeenergypros.lbl.gov/profile/ChrisLaumerGiddens
 Before drywall was installed, I tested the infiltration (air leakage) at the Proud Green Home (PGH) at Serenbe,…

Before drywall was installed, I tested the infiltration (air leakage) at the Proud Green Home (PGH) at Serenbe, and the home achieved 0.72 ach50, or 0.055 ELR (more on these numbers in a minute). In other words, it's really tight!!! The 2009 International Residential Energy Code (IECC), which is adopted in most states, requires an infiltration rate of 7.0 ach50 or less. That's seven-point-zero. That makes the Proud Green Home 89.8% tighter than a house built to the 2009 code. The 2012 IECC, which is slowly being adopted across the country (January, 2014 in Georgia), will require homes to be 3.0 ach50. That means the PGH will be 76% tighter than a 2012 code-built house.

Gobbledygook! What is ach50 and ELR?

ACH50: Air Changes per Hour at 50 Pascals.

ELR: Envelope Leakage Ratio

Pascals is a measurement of pressure, named after the French physicist (among other things), Blaise Pascal. 50 Pascals is equivalent to the house having a 20 mph wind blowing on all surfaces of the home. This is a standard used in the home performance industry to measure air leakage in a home. Using a blower door, the house is put under 50 Pascals of negative pressure, and a manometer (pressure gauge) spits out a result in CFM50 (Cubic Feet per Minute at 50 Pascals), which tells us approximately how much air is being pulled in through any gaps or cracks.

For ACH 50, we take that cfm50 number and plug it in to a formula, based on volume, and we get numbers like 7 ach50, 3 ach50, or 0.72 ach50!! Some feel this is not the best way to determine leakage, so there are plenty of others, like ELR.

ELR is a ratio of the amount of air leakage (cfm50) and the square footage of the building envelope (SFBE). ELR is taught and promoted by Southface Energy Institute, and is considered by many in the home performance industry, as a more accurate way to measure leakage.

In plain English, the house has a hole that is about 5.5" x 5.5", and it's about 33,000 cubic feet. If this home were built to just meet the 2009 Energy Code, that hole would be 17" x 17".

For a good discussion on different ways to measure leakage, and the basics of a blower door, check out this post by Martin Holladay, on Green Building Advisor.

How did we do it?

We have been posting videos on the construction of the PGH, showing some of the air sealing techniques, including using flashing tape at all joints between framing members, installing open-cell spray foam in all the wall and roof cavities, and using ZIP System R Sheathing on the walls and their Roof Sheathing on the roof. We've also talked about the building envelope construction including the foundation and above grade walls. All of these best practices and products resulted in a pretty tight structure.

Design a home is about architecture and building science. It's about the house as a system, where everything affects everything. For two separate Georgia homes, and for two separate builders, we have designed homes that have achieved below 1.0 ach50. The first one, the Grant Park Residence, tested at 0.77 ach50 at the final inspection for ENERGY STAR Certification. We also designed a third Georgia home that achieved less than 3.0 ach50, without the use of spray foam or ZIP System.

We're currently working on projects now where the homeowners are interested in the same (or better) performance so they can have low energy consumption, increased comfort and indoor air quality, and long term durability. We're seeing a trend...

Built Tight, Ventilate Right

It's a really good idea to design and build for a home as tight as possible. Doing so brings with it the need to provide fresh air for the people in the home, because oxygen-rich outside air is being kept from getting inside. In an earlier post, I showed you the Zenhnder America whole-house ventilation system (ERV) installed to bring in, and distribute, fresh air to the occupants. It's one of the most sophisticated systems on the market, and it's designed to keep a very well-balanced amount of fresh air through a fresh air supply in each room, and exhaust outlets in bathrooms and kitchen. It is also equipped with humidistat and other controls to help keep the relative humidity at acceptable levels.

written by Chris Laumer-Giddens


text:
Here's the rundown, per UCLA head coach Jim Mora: starter Jordon James is "fine"; senior Damien Thigpen is a game-time decision; reserve back Steve Manfro is out.
All three are battling ankle injuries, and both James and Thigpen entered Wednesday's no-pads practice with their right ankles wrapped. The Bruins also have Paul Perkins and Malcolm Jones available, though the latter did not carry the ball against Arizona last Saturday.
Of breakout two-way star Myles Jack, Mora said simply: "He's a linebacker."
Backup left tackle Conor McDermott has also undergone shoulder surgery, the Los Angeles Times reported. Continue reading


text:
CHERYL BEVERSDORF, Executive Vice President, Association of State and Territorial Health Officials, Washington, D.C.
JUDITH MILLER JONES, Director, National Health Policy Forum, Washington, D.C.
NANCY KAUFMAN, Vice President, The Robert Wood Johnson Foundation, Princeton, New Jersey
JORDAN RICHLAND, Executive Director, Partnership for Prevention, Washington, D.C.
JOSEPH THOMPSON, Luther Terry Fellow, Office of Disease Prevention and Health Promotion, U.S. Public Health Service, Washington, D.C.
ALISON WOJICIAK, Manager of Practice Programs, Association of Schools of Public Health, Washington, D.C.
The National Academies | 500 Fifth St. N.W. | Washington, D.C. 20001
Copyright © National Academy of Sciences. All rights reserved.
Terms of Use and Privacy Statement
C Using Performance Monitoring to Improve Community Health: Exploring the Issues (Workshop Summary) ."
Improving Health in the Community: A Role for Performance Monitoring . Washington, DC: The National Academies Press,
1997 .
Please select a format:


text:
About Sodexo Health Care Services
Sodexo, Inc. (http://www.sodexousa.com/) is a leading integrated food and facilities management services company in the U.S., Canada and Mexico, with $7.3 billion (USD) in annual revenue and 120,000 employees. Sodexo, Inc. serves more than ten million customers daily in corporations, health care, long term care and retirement centers, schools, college campuses, government and remote sites.
About Kosher Vending Industries, LLC.
Kosher Vending Industries (KVI) was established to address the needs of individuals who eat only certified kosher food and, as a result, often have limited options when away from home. The snacks which are Cholov Israel and Pas Israel, are all Kof-K certified and under a Chasidish Hashgacha.
KVI uses HOT Choice System(TM) technology from KRh Thermal Systems, Inc. The proprietary HOT Choice(R) Automated Diner was the first fully automated food delivery system to offer high-quality, hot cooked meals in 60 seconds (from frozen).
For more information on the various kosher certifications, business opportunities, and to find a Hot Nos
|SOURCE Kosher Vending Industries
Copyright©2008 PR Newswire.
All rights reserved


text:
Seville - Spain
Property ID: 8233
Print Page
In the city?s new commercial centre, just a few minutes' walk from the historical and monumental centre of seville, the city offers many activities for the tourists. You can enjoy spectacular flamenco shows and concerts on the streets, in bars or in the auditorium. isla m?gica is the pleasure and adventure park of seville. Other activities include going to the theatre, visiting museums, the roman ruins of it?lica, walking through the beautiful mar?a luisa park or enjoy the sightseeing route through the city.Check-in Time: 1:00 PMCheck-out Time: 11:00 AMCheck-in Days: SaturdayImportant InformationOnly for rci internal information: any close date
notifications must be sent to central headquarter
reservations dpt. Group melia: fax n? 00 34 91 579 1392The hotel may accept childrens under 12 years old
travelling with 2 adults without additional charge. From 12
years old, the price should need to be confirmed by the
hotel under request.


text:
Select Local Merchants
International Game Fish AssociationRead MoreTo beat the all-tackle world record for a yellowfin tuna, you'd have to hook a behemoth weighing in the neighborhood of 450 pounds. Should any angler ever successfully snag such a fish, the record keepers of the International Game Fish Association will be among the first to announce the catch's confirmed stature. As part of their mission to conserve all types of game fish and to promote ethical angling practices, the IGFA representatives also advise fishermen on how to bring the catch ashore, verify its measurements, and release it while causing as little stress to the fish as possible. The association's conservation efforts continue with its IGFA Great Marlin Race program, a partnership with Stanford University that outfits fishermen with research equipment to achieve a better understanding of marlin biology and the cause of pruney fingers. The IGFA also keeps the community engaged with ethical game fishing by hosting school groups and summer camps for kids. Beyond this programming, the IGFA maintains a museum that honors the history of sport fishing and its legendary anglers.300 Gulf Stream WayDania Beach, FL US
Young At Art Children's MuseumRead MoreIn 1989, Young At Art began as a small, 3,200-square-foot children's museum dedicated to shaping young minds and enriching the community through the transformative power of art. Since then, the tiny workshop has grown into a 55,000-square-foot collection of activities celebrating the diverse influences of art on our lives and imaginations, garnering a rare accreditation by the American Association of Museums for its efforts. At ArtScapes—one of the four main exhibits—kids and their parents travel through The Cave, a frantic slideshow of images conveying 5,000 years of human history, step into a replica of a New York City subway car, and view examples of graffiti as a means of creative expression against the oppressive forces of aluminum spray cans. Elsewhere, WonderScapes transports children up to 4 years old to a world inspired by the illustrations of DeLoss McGraw, whose version of Alice in Wonderland won the Society of Illustrators Book of the Year award in 2002, and GreenScapes demonstrates the immutable intersection of art and the environment as visitors build sculptures from natural materials. Never ones to ignore their creativity, teenagers can find refuge in the Teen Center, where a graphic design lab with Mac computers and a recording studio let them convert their pre-calc homework into digital form before it's too late.11584 Route 84Fort Lauderdale, FL US
Fort Lauderdale Antique Car MuseumRead MoreArthur Stone spent six decades assembling the collection of classic Packard autos that makes up the Fort Lauderdale Antique Car Museum. His love for the Packard's combination of engineering and elegance has resulted in the United States' largest Packard collection, containing one model from each year of the company's 58-year existence. The museum's 30,000-square-foot space mirrors the look of a 1920s Packard showroom, with heraldic-style gas-station signs hanging above gleaming specimens of auto history, all restored to full working order. Models such as the 2201 Woodie wagon from 1948 demonstrate the manufacturer's innovation amid changing times, and the 1909 18 Speedster evokes an era when saddled cheetahs shared roads with cars. Original concept-design drawings line the walls, and an expansive library contains shelves laden with periodicals and fascinating reading materials.1527 SW 1st Ave.Fort Lauderdale, FL US
International Swimming Hall of FameRead MoreThe ISHOF Museum houses the world's largest collection of aquatic memorabilia and is the single-largest source of aquatic books, manuscripts, and literature. More than forty exhibits and displays illustrate the history of the aquatically ambitious, recognizing the world's greatest swimming, diving, polo, and synchronized swimming performers and their spotlight-worthy accomplishments. Videos ranging from short informational pieces to coverage of the Olympic games are also available for viewing. Current exhibits include photo murals of the RMS Titanic, the largest collection of Olympic medals won by merpersons dating back to 1896, and a shrine dedicated to the swoonable swim legend Mark Spitz, which consists of a life-size wax statue of the mustached god-among-mortals, seven of his gold medals, and the starting block he used in the 1972 Munich games.1 Hall Of Fame DrFort Lauderdale, FL US
Museum of Discovery and ScienceRead MoreThe Museum of Discovery and Science ensures that adults as well as children have opportunities to explore diverse fields in the natural and physical sciences through myriad hands-on and immersive exhibits. Size: Two floors of exciting and informative exhibits Eye Catcher: In the 34,000-square-foot Eco-Discovery Center, kids can dig for fossils and face a sabertoothed tiger, gawk at a 12-foot mammoth, watch otters, and feel hurricane-force winds Don't Miss: In Go Green, visitors follow the lead of Harry the Heap, a recycling robot that shows the benefits of eco-consciousness by explaining landfills, composting, and more Sit Back: The museum's five-story IMAX screen flickers with both feature films as well as films that complement museum exhibits Special Programs: Summer camps immerse kids in STEM learning through fun activities401 SW 2nd StFort Lauderdale, FL US
Jewish Museum of FloridaRead MoreContrary to the belief that Jewish immigrants began populating Florida in the aftermath of World War II, the very first Jewish settlers in the state arrived a bit earlier—almost 200 years earlier, in fact. Spanish-controlled Florida banned all non-Catholic religions, but England's 1763 purchase of the land was followed shortly by the arrival of Alexander Solomons, Joseph de Palacios, and Samuel Israel—and a new heritage was born. Today, the Jewish Museum of Florida – FIU celebrates this rich legacy and its impact within the larger Jewish community with a core exhibit brimming with more than 500 artifacts that span over 250 years. In "Mosaic: Jewish Life in Florida," visitors will find relics such as a pocket watch owned by the first known Jewish boy born in Florida, a Purim party dress made for the Jacksonville YMHA in 1918 out of Floridian seashells, and the ketubah from the marriage of Margaret Fishler and Joel Fleet in 1940. Family photographs, immigration papers, and travel documents record the rich tradition of immigration, and images from wars dating back to 1815 evince the ongoing role Jewish residents have played in American history. In the building's community section, guests learn about more than 250 mayors, legislators, judges, and activists, including David Levy Yulee, the first Jew elected to Congress and the man who ushered Florida into statehood. Elsewhere in the museum, temporary exhibits might spotlight contemporary Jewish artists, Jewish rituals, or profile a prominent family. The museum is housed within two refurbished synagogues connected by the glass-roofed Bessie's Bistro, which serves snacks in the cheerful spirit of its namesake, Miss America 1945, Bess Myerson.301 Washington AvenueMiami Beach, FL US


text:
Learn how to add rich, interactive features like thumbnail galleries, image carousels, and web forms to your websites with Bootstrap 3.
Add interactive elements like a thumbnail gallery, dropdown menus, or a contact form using Bootstrap and a simple text editor.
"This $25 was the BEST I could have ever spent! I have spent hours relearning things I had forgotten and solidified my confidence in what I do know." —Claudia W.
more from our members »


text:
Out of Stock
© 2015 Replacements, Ltd. All rights reserved.
Quantity Available: 5
Piece Code: SFL
Piece Name: Fluted Champagne
Size: 9 in
Our Price Each:
© 2015 Replacements, Ltd. All rights reserved
With Our "Find This For Me" Service we notify you via email once we have stock!
Piece Code: G
Piece Name: Water Goblet
Size: 8 1/2 in
Piece Code: CLA
Piece Name: Claret Wine
Piece Code: W
Piece Name: Wine Glass
Size: 8 in
Piece Code: CSY
Piece Name: Sherry Glass
Size: 6 3/4 in
Piece Code: CBG
Piece Name: Brandy Glass
Piece Code: DOLD
Piece Name: Double Old Fashioned
Piece Code: CHB
Piece Name: Highball Glass
Piece Code: CJUG
Piece Name: Jug
Piece Code: CDEC
Piece Name: Decanter & Stopper


text:
I'm not expecting the team score to be particularly competitive, but the announcers said something really interesting at the start of the match:
This is the largest crowd for Rider Wrestling home match, and in fact for any Rider sport.
They did also say that Brown was a 2x finalist, so maybe this wasn't right, but they specifically said it that way. I'm impressed.


text:
Quantity Available:
WAC Lighting, founded in 1984, has developed a strong reputation for high quality decorative and task lighting. Based in Garden City, New York, WAC Lighting is a leading manufacturer of low voltage, line voltage and LED lighting, including track systems, transformers, lamps, cabinet lighting and recessed downlights.
The Caribe LED Track Light is available with the following:
- Spun metal shade
- Clear glass lens
- Metal supports
- 360° horizontal rotation and 90° vertical tilt
- "L" style yoke and pivoting head for easy adjustment
- 34° beam spread
- Dims to 1% with electronic low voltage dimmer (not included)
- Integrated electronic transformer with auto reset and short circuit protection
- Color Temperature: 3000K
- Lumens: 360
- UL & CUL Listed
- Average Rated Life: 25,000 hours
Finish: Antique Bronze, Antique Nickel
Track System: H Track, L Track
- One 8 Watt 12 Volt MR16 LED lamp (included).
- Fixture: Height Adjustable From 5.63", Adjustable To 6.63", Width 5.63"
- Head: Width 4"
Need help with some of our terminology? Check out Lumens' Lighting & Design Glossary.


text:
Systems and methods enabling search of a repository for the location of data that is similar to input data, using a defined measure of similarity, in a time that is independent of the size of the repository and linear in a size of the input data, and a space that is proportional to a small fraction of the size of the repository. The similar data segments thus located are further analyzed to determine their common (identical) data sections, regardless of the order and position of the common data sections in the repository and input, and in a time that is linear in the segment size and in constant space.
1. A computer-readable storage media encoded with computer-executable instructions to configure a processor to perform a method for identifying input data in repository data, the method comprising:
providing an index of the repository data comprising a plurality of repository distinguishing characteristics (RDCs) for each of a plurality of chunks of the repository data;
partitioning the input data into a plurality of input chunks and for each input chunk, determining a plurality of input distinguishing characteristics (IDCs);
wherein the distinguishing characteristics (DCs) of the repository and input chunks are determined by;
selecting a seed size and calculating hash values for every seed of the chunk;
selecting a subset of the plurality of hash values;
determining positions of the seeds within a seed sequence of the selected subset of hash values;
applying a function to the determined positions to determine corresponding other positions within the seed sequence;
defining the set of distinguishing characteristics as the hash values of the seeds at the determined other positions;
conducting a similarity search for each input chunk comprising searching the index for matches of the IDCs of the input chunk with the RDCs, wherein the similarity searching requires a threshold number of matching IDCs and RDCs for a declared similarity of an input chunk and similar repository chunk; and
computing at least one of common and noncommon sections of the input data and repository data using the locations of pairs of matching distinguishing characteristics of an input chuck and similar repository chunk as anchors to define corresponding intervals in the input data and repository data for use in identifying said common or noncommon data sections.
2. The media of
3. The media of
4. The media of
5. The media of
6. The media of
7. The media of
8. The media of
9. The media of
10. The media of
11. The media of
12. The media of
13. The media of
14. The media of
15. The media of
16. The media of
17. The media of
18. The media of
19. The media of
20. The media of
21. The media of
22. The media of
23. The media of
24. The media of
25. The media of
26. The media of
27. The media of
the subset of hash values is selected by identifying the k largest hash values; and
the function applied to determine the corresponding other positions is to identify a next seed in the seed sequence.
28. The media of
selecting a number of the largest hash values;
selecting a number of the smallest hash values;
selecting a number of the hash values closest to a median value of the generated hash values for the corresponding data chunk;
selecting a number of the hash values closest to a constant value; and
selecting a number of the hash values closest to a percentile value of the generated hash values for the corresponding data chunk.
29. The media of
applying a constant value to each hash position corresponding to each of the hashes of the selected subset.
30. The system media of
an absolute value of the constant value is 1.
31. A system for identifying input data in repository data comprising:
a processor; and
a memory,
wherein the processor and memory are configured to perform a method comprising:
providing an index of the repository data comprising a plurality of repository distinguishing characteristics (RDCs) for each of a plurality of chunks of the repository data;
partitioning the input data into a plurality of input chunks and for each input chunk, determining a plurality of input distinguishing characteristics (IDCs);
wherein the distinguishing characteristics (DCs) of the repository and input chunks are determined by:
selecting a seed size and calculating hash values for every seed of the chunk;
selecting a subset of the plurality of hash values;
determining positions of the seeds within a seed sequence of the selected subset of hash values;
applying a function to the determined positions to determine corresponding other positions within the seed sequence;
defining the set of distinguishing characteristics as the hash values of the seeds at the determined other positions;
conducting a similarity search for each of input chunk comprising searching the index for matches of the IDCs of the input chunk with the RDCs, wherein the similarity searching requires a threshold number of matching IDCs and RDCs for a declared similarity of an input chunk and similar repository chunk; and
computing at least one of common and noncommon sections of the input data and repository data using the locations of pairs of matching distinguishing characteristics of an input chuck and similar repository chunk as anchors to define corresponding intervals in the input data and repository data for use in identifying said common or noncommon data sections.
This invention relates to systems and methods for searching of and storage of data; these systems and methods are particularly useful for generating and maintaining a large scale data repository in backup and restore systems.
Storing large amounts of data efficiently, in terms of both time and space, is of paramount concern in the design of a backup and restore system, particularly where a large repository of digital data must be preserved. For example, a user or group of users might wish to periodically (e.g., daily or weekly) backup all of the data stored on their computer(s) as a precaution against possible crashes, corruption or accidental deletion of important data. It commonly occurs that most of the data, at times more than 99%, has not been changed since the last backup has been performed, and therefore much of the current data can already be found in the repository, with only minor changes. If this data in the repository that is similar to the current backup data can be located efficiently, then there is no need to store the data again, rather, only the changes need be recorded. This process of storing common data once only is known as data factoring.
A large-scale backup and restore system that implements factoring may have one petabyte (PB) or more in its repository. For example, banks that record transactions performed by customers, or internet service providers that store email for multiple users, typically have a repository size ranging from hundreds of gigabytes to multiple petabytes. It may be recalled that 1 PB=1024 TB (terabyte), 1 TB=1024 GB (gigabyte), 1 GB=1024 MB (megabyte), 1 MB=1024 KB (kilobyte), 1 KB=1024 bytes. In other words, a petabyte (PB) is 250 bytes, or about 1015 bytes.
In such systems, the input (backup) data stream to be added to the repository may be, for instance, up to 100 GB or more. It is very likely that this input data is similar to data already in the repository, but not exactly the same, and/or it may not be arranged on the same data boundaries (e.g., block alignment). In order to make a subsequent factoring step efficient, the backup and restore system must be able to efficiently find the location of the data in the repository that is sufficiently similar to the input stream without relying on any relative alignment of the data in the repository and the data in the input stream. It must also be able to efficiently add the input stream to the repository and remove from the repository old input streams that have been deleted or superseded.
Generally, it can be assumed that data changes are local. Thus, for instance, if 1% of the data has been changed, then such changes are concentrated in localized areas and in those areas there are possibly major changes, while the vast majority of the data areas have remained the same. Typically (although not necessarily) if 1% of the data has changed, then viewing the data as a stream of 512-byte blocks rather than as a stream of bytes, a little more than 1% of the blocks have changed. However, because there is no predetermined alignment of the data in the input stream and repository, finding the localized data changes is a significant task.
Searching for similar data may be considered an extension of the classical problem of pattern matching, in which a text T of length n is searched for the appearance of a string P of length m. Typically, n is much larger than m. Many publications present search methods which attempt to solve this problem efficiently, that is, faster than the na�ve approach of testing each location in T to determine if P appears there. By preprocessing the pattern, some algorithms achieve better complexity, for example see:
All of these algorithms work in time that is of order O(n+m), which means that the search time grows linearly with the text. One problem with these algorithms is that they are not scalable beyond some restrictive limit. For example, if searching a 1 GB text (the size of about 300 copies of the King James Bible) can be done in 1 second, searching a one Petabyte text would require more than 12 days of CPU time. A backup and restore system with one Petabyte (PB) or more in its repository could not use such an algorithm. Another disadvantage of the above algorithms is that they announce only exact matches, and are not easily extended to perform approximate matching.
Instead of preprocessing the pattern, one may preprocess the text itself, building a data structure known as a suffix tree; this is described in the following publications:
If preprocessing is done off-line, then the preprocessing time may not be problematic. Subsequent searches can be then performed, using a suffix tree, in time O(m) only (i.e., depending only on the pattern size, not on the text size). But again, only exact matches can be found; moreover, the size of the suffix tree, though linear in the size of the text, may be prohibitive, as it may be up to 6 times larger than the original text.
For backup and restore, it would be desirable to use an algorithm for approximate pattern matching because it will usually be the case that not an exact replica of the input data can be found in the repository, but rather a copy that is strictly speaking different, but nevertheless very similar, according to some defined similarity criterion. Approximate pattern matching has been extensively studied, as described in:
One recent algorithm works in time O(n√{square root over (k log k)}), where n is the size of the text and k is the number of allowed mismatches between the pattern and the text; see for example:
For large-scale data repositories, however, O(n√{square root over (k log k)}) is not an acceptable complexity. An input data stream entering the backup and restore system may be, for instance, of length up to 100 GB or more. If one assumes that an almost identical copy of this input stream exists in the repository, with only 1% of the data changed, there are still about 1 GB of differences, that is k=230 bytes. To find the locations of approximate matches in the repository, this algorithm will consume time proportional to about 180,000 times the size of the text n. This is unacceptable where our premise is n alone is so large, that an algorithm scanning the text only once, may be too slow.
Another family of algorithms is based on hashing functions. These are known in the storage industry as CAS (Content Addressed Storage), as described in:
The general paradigm is as follows: The repository data is broken into blocks, and a hash value, also called a fingerprint or a signature, is produced for each block; all of these hash values are stored in an index. To locate some given input data, called the version, it is also broken into blocks and the same hash function (that has been applied to the repository blocks) is applied to each of the version blocks. If the hash value of a version block is found in the index, a match is announced.
The advantage of CAS over the previous methods is that the search for similar data is now performed on the index, rather than on the repository text itself, and if the index is stored using an appropriate data structure, the search time may be significantly reduced. For instance, if the index is stored as a binary tree or a more general B-tree, the search time will only be O(log (n/s)), where n is the size of the text, and s is the size of the blocks. If the index is stored in a sorted list, an interpolation search of the sorted list has an expected time of O(log log(n/s)). If the index is stored in a hash table, the expected time could even be reduced to O(1), meaning that searching the index could be done in constant expected time, in particular in time independent of the size of the repository text.
There are, however, disadvantages to this scheme. As before, only exact matches are found, that is, only if a block of input is identical to a block of repository will a match be announced. One of the requirements of a good hash function is that when two blocks are different, even only slightly, the corresponding hash values should be completely different, which is required to assure a good distribution of the hash values. But in backup and restore applications, this means that if two blocks are only approximately equal, a hashing scheme will not detect their proximity. Searching in the vicinity of the found hash value will also not reveal approximate matches. Moreover, an announced match does not necessarily correspond to a real match between two blocks: a hash function h is generally not one-to-one, so one can usually find blocks X and Y such that X≠Y and h(X)=h(Y).
These problems create a dilemma of how to choose the size s of the blocks: if a large block size is chosen, one achieves a smaller index (since the index needs to store n/s elements) and the probability of a false match is reduced, but at the same time, the probability of finding a matching block is reduced, which ultimately reduces the compression ratio (assuming the hashing function is used in a compression method, which stores only non-matching blocks, and pointers to the matching ones). If, on the other hand, a small block size is chosen, the overall compression efficiency may increase, but the probability of a false match also increases, and the increased number of blocks may require an index so large that the index itself becomes a storage problem.
In summary, many elegant methods have been suggested to address these problems, but they all ultimately suffer from being not scalable, in reasonable time and space, to the amount of data in a large sized data repository.
The present invention is directed to systems and methods for efficient data searching, storage and/or reduction.
Systems and methods consistent with one embodiment of the invention can search a repository of binary uninterpretted data for the location of data that is similar to an input data, using a defined measure of similarity, and can do so in time that is independent of the size of the repository and linear in the size of the input data, and in space that is proportional to a small fraction of the size of the repository.
Systems and methods consistent with other embodiments of the invention can further analyze the similar data segments of the repository and input data and efficiently determine their common (identical) sections, regardless of the order and position of the common data in the repository and input, and do so in time that is linear in the segments' size and in constant space.
In one embodiment, a method is provided for identifying input data in repository data comprising:
In one embodiment, a method is provided for identifying common sections of two data intervals comprising:
In one embodiment, a system is provided for identifying input data in repository data comprising:
In one embodiment, a system is provided for identifying input data in repository data comprising:
In one embodiment, a computer-readable medium is provided containing instructions to configure a data processor to perform a method for identifying input data in repository data, the method comprising:
In one embodiment, a system is provided for identifying input data in repository data, the system comprising at least one memory comprising:
In one embodiment, a computer readable media is provided for identifying input data in repository data, the computer readable media comprising code, the code comprising:
In one embodiment, a method is provided enabling lossless data reduction by partitioning version data into:
In one embodiment, a method is provided of locating matching data in a repository to input data comprising:
In one embodiment, a method is provided of searching a repository of binary uninterpretted data for a location of common data to an input data comprising:
In one embodiment, a method is provided of indexing repository data comprising:
In one embodiment, a method is provided comprising:
In one embodiment, a method is provided for searching in repository data for parts that are sufficiently similar to an input data according to a similarity criterion, comprising:
According to such method, the RDCs are obtained by:
According to such method, the method is used for lossless data reduction comprising:
According to such method, the method is used for space-saving data backup and data restore by saving data in a data repository, and restoring data from the data repository. In one embodiment, the lossless data reduction is done online, as received by the repository, and substantially in the order of receipt by the repository. In one embodiment, the lossless data reduction is done offline comprising:
Additional objects and advantages of various embodiments of the invention are set forth in the description which follows, and will be obvious from the description, or may be learned by practice of the invention. The advantages of various embodiments of the invention may be realized by the elements and combinations of the appended claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as described. Further features and/or variations may be provided in addition to those set forth herein. For example, the present invention may be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed below in the detailed description.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments and aspects of the present invention and, together with the description, serve to explain certain principles of the invention. In the drawings:
As used in the following embodiments, a repository is a collection of digital data stored in memory and/or storage of a computer reference; there is no limit on its size and the repository can be of the order of one or more PB. In particular applications, the data is stored as binary uninterpretted data. The input data can be of the same type or different from the repository data; the input data is also called the version. In particular applications, the version and repository are broken into chunks. The chunk size m is a parameter, e.g. 32 MB. The term seed refers to a consecutive sequence of data elements, such as bytes. The seed size s is also a parameter, e.g. 512 bytes, or (in other non-limiting examples) 4 KB or even 8 KB. Generally, the seed size s is much smaller than the chunk size m.
In accordance with certain embodiments of the invention a hash function is used. A hash function maps elements of some large space into elements of some smaller space by assigning elements of the first space a numeric value called the hash value. The hash function is usually an arithmetic function that uses as input some numeric interpretation of the base elements in the first space. A "good" hash function will most of the time produce a statistically unrelated hash value for even the slightest change in the elements of the first space. In the following embodiments a modular hash function is used. This, however, is a non-limiting example. As is well known, a modular hash function has the property that if the hash value of s consecutive base elements in some stream is known, then the hash value of the s base elements in the stream that start one base element later (and are thus overlapping with the previous sequence of base elements) can be calculated in O(1) operations. In this way, all the hash values of all the seeds in a chunk can be calculated in O(m) operations rather than in O(m*s). Because of this property, this hash function is called a rolling hash function. Note that the invention is not bound by the use of rolling hash functions in particular or hash functions in general.
An index is a data structure that facilitates efficient searching. It should be space efficient. For some applications (such as the current embodiment) it should support efficient dynamic operations, such as insertion and deletion. An index may be implemented by a hash table, so that searching, insertion and deletion are supported in O(1) operations each. In accordance with certain embodiments of the invention described below, the index is indexed by a key, which is a hash value of some seed, and each key value identifies the seed (or seeds) that it was generated from.
Synchronization Algorithm and Factoring
An input chunk of size m, say 32 MB, is processed (41) in the following manner. First, k distinguishing characteristics in the version chunk (42) are calculated, where k is a parameter of this algorithm as explained below (typically of the order of a few tens), and where k<<m. In accordance with one embodiment (and as will be further described below with respect to a specific example), the k distinguishing characteristics can be calculated as follows (not shown in
Note that the invention is not bound by calculating the distinguishing characteristics in the manner described above. Any selection that yields, to a high extent, unique, robust, and well spread characteristics, and is repeatable for a given chunk, can be used in this embodiment of the invention. Unique means that two different chunks will be assigned, with sufficiently high probability, two different sets of characteristics. Robust means that the characteristics assigned to a chunk will remain fairly constant given that the chunk undergoes modest changes (e.g., in up to 25% of its seeds). Well spread means that the characteristic locations are well spread (substantially uniformly) over the chunk (geographically spread). Repeatable means that a certain form of a chunk will substantially always be assigned the same characteristics. Such methods may consider only a subset of the chunk's seeds. For instance, the selection of characteristics can be at intervals in the chunk the distance between which is defined by an arithmetic or geometric sequence, in accordance with a certain embodiment. Other methods consider all of the chunk's seeds, such as the foregoing method described. In accordance with this embodiment, a minimum geographic (positional) spread between the characteristics can be enforced, thus improving coverage. In general, any repeatable selection based on mathematical characteristics of the calculated seed values is applicable. For example, one may choose the k minimal hash values, or the k hash values closest to the median of all the hash values calculated in the chunk, or even the k hash values closest to some predetermined constant. Another example is choosing the k characteristics as the sum of pairs, such that the first pair consists of the minimal value and the maximal value, the second pair consists of the second minimal value and the second maximal value, etc. Other variants are applicable, depending upon the particular application.
Also, instead of using a one byte shift of the seed corresponding to a maximal value, one could use some other predetermined constant shift, or even different shifts depending on the position and/or on the calculated hash value. The example of using maximum hash values and one byte shifts is thus only one possible embodiment.
A specific example of this one procedure for calculating the distinguishing characteristics is given below.
In this embodiment, the repository is associated with an index which stores, in respect of each repository chunk, n distinguishing characteristics where n<=k. The n distinguishing characteristics are n hash values of the seeds of size s bytes that follow by one byte (and overlap by s−1 bytes), respectively, the seeds having the n maximum hash values from among the seeds in the repository chunk. The reason why k distinguishing characteristics are calculated for each input chunk, but the index contains only n distinguishing characteristics, for each repository chunk is explained below. The index further stores the position in the repository of each distinguishing characteristic. The invention is not bound by the specific index structure and contents described above.
For a better understanding of an index structure,
Returning to
Note that the computational complexity for finding these j matches is low since it requires searching the index (by this example, a hash table) at most k times, each time with complexity of O(1).
In one embodiment, a version chunk that has j≧2 matching distinguishing characteristics is considered as matched with one or more repository chunks. On the other hand, a version chunk that has 0≧j≧1 matching distinguishing characteristics is considered to be unmatched with any of the repository chunks. One match is considered not statistically significant because of the well known birthday paradox.
It should be noted that a distinguishing characteristic of the version chunk may match multiple distinguishing characteristics of the repository chunks. It is also possible that two version distinguishing characteristics are matched with two repository distinguishing characteristics which are well apart from each other, and may belong to two separate repository chunks. It then arises from the foregoing that a version chunk may be matched with multiple repository chunks. For each such repository chunk i, let hi be the number of such matching distinguishing characteristics. In one embodiment, a level of similarity between the repository chunk i and the version chunk is measured by the ratio between hi and n; where this ratio exceeds a threshold, the repository chunk can be considered sufficiently similar to the version chunk (step 45 in
Consider, for example, a version that has undergone some changes compared to an older version of binary data stored in a repository. Normally, such changes are reflected in a small percentage of the seeds undergoing some local changes. The net effect is that for a given chunk, most of it is left intact. Since the positions of the distinguishing characteristics of the chunk are chosen to be properly spread (geographically across the chunk), the local change will affect only a few, if any, of the distinguishing characteristics and the rest will not change. In other words, this representation method is robust, since even a large percentage of localized change(s) will still leave many distinguishing characteristics intact. Statistically, in certain embodiments, if the search finds a repository chunk with at least two matches (meaning that in the latter example j>=2), then the repository and version chunks are sufficiently similar to be worth comparing further.
In select embodiments, to improve the uniform spread of the distinguishing characteristics upon the version chunk (which may eventually also be a part of the repository), the chunk is further divided into u sub-chunks. For each sub-chunk k/u distinguishing characteristics are computed, that constitute together k distinguishing characteristics.
In select embodiments, to improve the significance of each match of distinguishing characteristics, a list of highly recurring distinguishing characteristics is maintained. When a distinguishing characteristic is calculated for a number of version chunks that exceeds some threshold, it is considered to belong to some systematic pattern in the data, thus yielding reduced distinguishing information. It is then added to a list of recurring values, to avoid its usage as it occurs for succeeding chunks. Upon calculation of a distinguishing characteristic, its value is checked for existence in the said list, and if it exists, it is discarded and another distinguishing characteristic is computed in its place.
In the described embodiment, more than n and up to k distinguishing characteristics are possibly searched for in the index, whilst only n are stored in the index in respect of each repository chunk. By this embodiment, there are two possible effects on maximum hash values that may be caused by changes to the version chunk with respect to the repository: the first effect is that a maximum hash value could disappear because the data that comprises its corresponding seed has been modified; the second effect is that changed data could introduce a higher maximum value, displacing a still existing maximum. In cases involving the second effect, searching for more distinguishing characteristics provides more stability since a prior maximum has not disappeared, it has only been displaced. These two effects are reasons for selecting the maximum values in descending order, and/or for choosing k>n.
Returning again to
In a next step (48) of this embodiment, the distinguishing characteristics of the matched parts of the repository are removed from the index. This step is performed in order to eliminate from the index any reference to the "old" parts, now replaced with a more updated version of the new input chunk. In a next step (49), the n most significant distinguishing characteristics of the new chunk are added to the index. In this embodiment, a distinguishing characteristic A is more significant than another distinguishing characteristic B if the hash value of the maximal seed of A is greater than that of B. Note that this is done at substantially no cost, since n is small and removing and inserting each one of the n values to the hash table may be performed at O(1) operations. Processing of the version chunk is now done (404).
Note that the invention is not bound by the foregoing example of an index update policy. For other applications it might be appropriate to keep all of the distinguishing characteristics of both the version chunk and all its matching repository parts; or alternatively, avoid the addition of the version chunk's distinguishing characteristics; or possibly, update the index with some mixture of the version and the repository chunks' distinguishing characteristics.
Specifically in this embodiment, where the version chunk's distinguishing characteristics replace all of the matched repository parts' features, another index, called a reverse index, can be used to identify all of the distinguishing characteristics (some possibly not matched with the version chunk's distinguishing characteristics) associated with the relevant repository parts. The reverse index is keyed by the locations in the repository, and maps these locations to their associated distinguishing characteristics. This reverse index also facilitates maintaining the consistency of the main index, in cases of deletion of parts of the repository.
Also note that the invention is not bound by this embodiment where the index starts empty. For other applications it might be appropriate to load the index based on an existing body of repository data, via the foregoing process of dividing the repository into chunks, calculating their distinguishing characteristics, and building the index based on this information. In such a case, the index may or may not be further updated by the incoming version chunks, according to some update policy of the type mentioned above.
It is emphasized that the computational complexity of searching the repository for data that is similar to the version data is proportional to the size of the version, O(version), and is designed to be independent of the size of the repository. This search requires in accordance with the non-limiting embodiments described above no more than k hash table searches of O(1) each per version chunk. Since k<m (m being the size of a version chunk), it arises that by the specified embodiments, the computational complexity for finding a similar chunk in the repository does not exceed O(version), the complexity of calculating the distinguishing characteristics, and this is true irrespective of the repository size. The search procedure for similar data is thus very efficient, even for very large repositories.
Furthermore, it is emphasized that the space needed for the index is proportional to the ratio between the number of distinguishing characteristics stored per chunk of repository, and the size of the chunk, i.e., the ratio between n and m. By one embodiment, where n is 8 and m is 32 MB, and the space needed to store each distinguishing characteristic is 16 bytes, a total of 128 bytes is stored in the index for each 32 MB of repository, a ratio of better than 250,000:1. Stated differently, a computer system with a RAM memory of 4 GB can hold in its memory the index needed for a 1 PB repository, facilitating rapid searching of the index and hence the rapid finding of similar data in a very large repository for an arbitrary input chunk.
It should be noted that once similar chunks are found based on identifying matched distinguishing characteristics in the manner described above, it may be of interest to identify the exact differences between the similar chunks. In such cases, a more detailed comparison (or supplemental) algorithm may be applied, for comparing the full data of the respective chunks (and not only the n distinguishing characteristics). Typical, yet not exclusive, examples of such algorithms are binary difference and byte-wise factoring types of algorithms. An improved binary difference algorithm is described below, which can advantageously be used in select embodiments.
The supplemental algorithm may be less efficient (in terms of computational resources) compared to the synchronization (similarity search) algorithm just described. The degraded efficiency may stem from the fact that in the supplemental algorithm all of the data of a given repository chunk is processed, whereas in the similarity search algorithm only partial data associated with the chunk is processed (i.e. data that included the distinguishing characteristics). However, because the supplemental algorithm is applied to only one repository chunk of size m (e.g. 32 MB), or possibly to a few such repository chunks that have already been found to be sufficiently similar to an input chunk, the degraded performance may be relatively insignificant in select applications. This is especially true compared to the alternative of executing the supplemental algorithm on an entire repository, especially one as large as 1 PB or more.
The foregoing embodiment of the similarity search algorithm exemplifies the use of an index to resolve a type of nearest neighbor query, for which the most similar repository chunks to the input version chunk are sought. This embodiment by no means limits the invention. The index can be used to resolve other kind of queries, such as range queries; the particular type of query being determined by the specific application.
For a better understanding of the foregoing similarity search, there follows a description which exemplifies certain embodiments of the invention. The invention is not bound by this example. For convenience of description the repository includes a single chunk and the example will illustrate how an input chunk is classified as sufficiently similar to the repository chunk.
Step 1: Build the Index for the Repository
This example uses the following repository string: "Begin-at-the-beginning-and-go-on-till-you-come-to-the-end;-then-stop." Note that this step is a by-product of previous iterations of the algorithm. It is included here explicitly for clarity of the example.
Step 1a: Calculate the Hashes
The example uses a rolling hash function to calculate the hash values at every byte offset. It uses a modular hash function, which utilizes, for the sake of illustration, the prime number 8388593; the hash function used is h(X)=X mod 8388593. In this example, the seed size is 8 bytes.
Input string: "Begin-at-the-beginning-and-go-on-till-you-come-to-the-end;-then-stop."
Find the n text positions with the maximal hash values. In this example, for n=4, these are:
As noted previously, the maximum hash values themselves do not have a sufficiently uniform probabilistic distribution; hence, for each seed corresponding to one of the maximum hash values, we use the hash value of the seed that follows by one character. These hash values are used as the distinguishing characteristics for the purposes of this example and, together with their positions, they constitute the index for this example.
The repository was modified to "Start-at-the-beginning-and-continue-to-the-end; -then-cease." This modified repository is regarded as the version (by this example having only one chunk).
Step 2a: Calculate the Hashes
Input string: "Start-at-the-beginning-and-continue-to-the-end ;-then-cease."
Find the k text positions with the maximum hash values. In this example, for k=8, these are:
As noted previously, the maximum hash values themselves do not have a sufficiently uniform probabilistic distribution; hence, we use the hash value of the seed that follows by one character. These positions are used as the distinguishing positions eight hash values are used to search the index.
The version hash values 5615355 (version position 18), 6310941 (version position 35) and 614663 (version position 6) were found in the index. They correspond to positions in the repository 18, 46 and 6 respectively. A match is declared: the algorithm identified that "Start-at-the-beginning-and-continue-to-the-end;-then-cease." is similar data to "Begin-at-the-beginning-and-go-on-till-you-come-to-the-end;-then-stop.", and it found the corresponding positions.
Note that by this example, the threshold for similarity (being the number of minimal matches of distinguishing characteristics) is j=2. Had this threshold been set to 4, the chunks would not be regarded sufficiently similar, since only three matches were found. Note also that by this example n was set to 4, meaning the number of distinguishing characteristics of a repository chunk is 4, and k was set to 8, meaning the number of distinguishing characteristics calculated for a version chunk is 8. By setting k>n, the search returns the repository location of the number 7735648, which was moved from fourth maximal value in the repository to fifth maximal value in the input and thus would not have been found if k was set to 4 (k=n).
This example illustrates how to find similar chunks in a degenerated case of a repository holding only one chunk. However, even for an index storing distinguishing characteristics of numerous chunks, the search procedure would still be very efficient, since search within the index (e.g., here stored as a hash table) is done in a very efficient manner, even for a large index. Note also that the data stored in respect of each index entry is small (in this example the hash value and position), and accordingly in many applications the index can be accommodated within the internal fast memory of the computer, obviating the need to perform slow I/O operations, thereby further expediting the search within the index.
Complexity (of Synchronization Algorithm)
The time needed to calculate the hashes of the seeds of a version chunk is linear in the size of the chunk because a rolling hash is used. The time needed to calculate the k maxima is O(m*log(k)), which is reasonable because k is small. The time needed to search the index for the k distinguishing characteristics if the index is a binary tree is O(k*log(r)), where r=(R*k)/m is the number of entries in the index, where R is the size of the repository (up to about 250), k is small (typically 23) and m is the chunk size (typically 225), so r is typically 228, and log(r)=28. Since k is small, searching the index overall is acceptable. The time needed to search the index for the k distinguishing characteristics if the index is represented as a hash table is k*O(1). Therefore the chunk search time is dominated by the time it takes to calculate and order the maxima, namely Q(m*log(k)), and hence is equivalent to a small number of linear scans of the version chunk. Since k is small, the overall search time is acceptable. Note that this result is a fraction of the complexity of the brute force algorithm, which is O(R*m), the product of the size of the repository R with the size of the chunk m.
The complexity of the time needed to insert a version chunk into the index is the same as that for searching the index. No extra time is needed to calculate the n distinguishing characteristics since these were already calculated.
The space requirements for this algorithm are those needed by the index. Each entry has for the given example parameters of 16 bytes, including key (distinguishing characteristic) and position data, and there are 228 (the value of r calculated above) of them in 1 PB, so a 4 GB index is needed to manage 1 PB of repository data.
The system according to the present embodiment may be executed on a suitably programmed computer. Likewise, the invention contemplates a computer program being readable by a computer for executing the method of the invention. The invention further contemplates a machine-readable memory tangibly embodying a program of instructions executable by the machine for executing the method of the invention.
Binary Difference Algorithm
A new binary difference algorithm is now described that efficiently computes the common sections of two data intervals. In the described embodiment, the algorithm uses the output of the previously described similarity search (synchronization) algorithm, that specifies for a given version chunk the locations of several pairs of matching distinguishing characteristics in the version and repository data. A pair of locations of matching distinguishing characteristics (one in the repository and one in the version) is herein denoted as an anchor. The anchors are used for alignment and to prune from further processing repository intervals that are not likely to contain matches with the version, and thus focus on the repository intervals that are most similar to the version chunk. This reduces the processing time of the algorithm.
Based on the anchors, corresponding intervals are defined as pairs of version and repository intervals that are most likely to contain matching sections (identical data). The binary difference process is used on each of these interval pairs. Using the analog of sliding windows, instead of positioning the repository and version windows in matching offsets, we position them according to the anchors (possibly in non-matching offsets).
One advantage of the present algorithm is use of a seed step size on one interval of the interval pair. While known binary difference or delta algorithms move in byte steps on both intervals, the present algorithm moves in for example byte steps only on one interval (the version interval), and in seed size (e.g. multiple byte) steps on the other interval (the repository interval). This technique speeds up processing and reduces space requirements, while not lessening the matching rate (since matches are expanded both backward and forward). Another advantage of the present algorithm is that, while known binary delta algorithms produce both add and copy directives, the present algorithm can be used to produce only copy directives, in sorted order. The add directives can then be implicitly deduced, as needed, from the copy directives, thus decreasing the storage required for the algorithm's output.
The following table defines the symbols used in the present embodiment, while
The inputs in the described embodiment are a version chunk, an array of hash values at byte offsets associated with the version chunk, and a set of anchors linking the version chunk and the repository data. The latter two inputs are produced by the synchronization (similarity search) algorithm. The output of the binary difference algorithm is a set of pairs of matching (i.e. identical) intervals in the version chunk and repository data. A pair of matching intervals is denoted as a copy interval. Each copy interval may be coded as a copy directive, containing the start offsets of the associated intervals in the version and repository, and the interval size. The copy directives refer to separate (non-overlapping) version intervals, and are produced by the algorithm sorted in ascending version offset order.
A more detailed description is now given with respect to
Step 1—Compute anchor sets (82 in
Step 2—Calculate the version interval (92 in
Step 3—Calculate the repository interval (step 93 in
Where the present algorithm is a part of a factoring application, the corresponding repository interval Ij R is read from the repository into memory (step 94 in
Step 4 (refer to FIG. 12)—Expand the anchor matches (step 95 in
Step 5 (refer to FIG. 13)—Load the repository interval hash values into a hash table (step 96 in
Step 6 (refer to FIG. 14)—Search for matches (steps 97-105 in
Complexity (Binary Difference)
Storage: The embodiment of the binary difference algorithm described here uses a fixed sized hash table (RHashT), whose maximum size is proportional to the size of a chunk divided by the seed size, since the chunk size is an upper limit on the size of the repository interval. Hence the table size is sub-linear in the chunk size. In addition, temporary storage for the copy directives of the anchor matches is required. This is proportional to the number of anchors in a chunk, i.e. the number of its distinguishing characteristics, which is small. Therefore, the total storage requirements of the algorithm are sub-linear in the length of the chunk.
Time: The phase of expanding the anchor matches (step 95) and loading the repository hash values into RHashT (step 96) takes one linear pass on the corresponding intervals. The phase of searching for the version hash values in RHashT (step 98) and expanding their found matches (step 99) resembles the greedy algorithm, whose worst case time is quadratic in the corresponding interval length. However, by restricting the length of the hash table chains to a fixed size, the average time for this phase is between 1 to the length of the hash chain—linear passes on the corresponding intervals. Note that the running time is also a function of the amount of resemblance (identical data) between the version and repository intervals (the more resemblance, the less time required). There is also extra time taken by processing overlaps of successive corresponding intervals. It follows that the average total time required is 2 linear passes on the corresponding intervals.
The systems and methods disclosed herein may be embodied in various forms including, for example, a data processor, such as a computer. Moreover, the above-noted features and other aspects and principles of the present invention may be implemented in various environments. Such environments and related applications may be specially constructed for performing the various processes and operations according to the invention or they may include a general-purpose computer or computing platform selectively activated or reconfigured by code to provide the necessary functionality. The processes disclosed herein are not inherently related to any particular computer or other apparatus, and may be implemented by a suitable combination of hardware, software, and/or firmware. For example, various general-purpose machines may be used with programs written in accordance with teachings of the invention, or it may be more convenient to construct a specialized apparatus or system to perform the required methods and techniques.
Systems and methods consistent with the present invention also include computer readable media that include program instruction or code for performing various computer-implemented operations based on the methods and processes of the invention. The media and program instructions may be those specially designed and constructed for the purposes of the invention, or they may be of the kind well known and available to those having skill in the computer software arts. Moreover, the computer readable media may be in the form of a signal on a carrier wave or may be in the form of a storage media such as a disk. Examples of program instructions include, for example, machine code, such as produced by a compiler, and files containing a high level code that can be executed by the computer using an interpreter.
As shown in
A storage device may be embodied by a variety of components or subsystems capable of providing storage, including, for example, a hard drive, an optical drive, a general-purpose storage device, a removable storage device, and/or memory.
Various embodiments of the methods and systems of the invention described herein are useful for identifying data in an input stream that already exists in a repository. Products utilizing such systems and methods include backup-to-disk products to save disk storage space by not repeatedly storing backup data that has not changed since the previous time it was backed up. This saves the end user disk space when storing multiple backups in the same repository.
The systems and methods of the present invention may be included in storage equipment, intelligent switches, servers, and software applications. The methods and systems may be bundled with derivative products including other components. Service providers can utilize the systems and methods to offer the described capabilities as a service. The systems and methods may be particularly useful in the data protection market, e.g., for backup and recovery, replication, vaulting and media management. Other implementations may include use in primary storage.
The systems and methods described herein relate to managed storage medium and representation of data in a managed repository. This may include disks, tapes and any other form of storage medium that may become commercially viable over time. The invention is not limited to the use of disks or fixed media, but is also applicable to removable media. For example, a removable disk may be used as a target output device; it may be managed in a similar way to tape, both being removable media. One approach to design of a system which includes removable media such as tapes, is to have a disk operate as a store for those chunks or elements that are most referenced, and have the least referenced chunks moved onto tape media. This could be balanced by a management system that takes into consideration the newness of any chunk. Also, the system may move related repository chunks to tape as a whole set to be archived and restored from the archive as a set. This would multiply the advantages of the invention. For example, if 100 pieces of media were required to be used without the invention then for example 10 pieces of media may only be required after utilization of the invention. The media may comprise virtual media that describes itself as a repository.
Various embodiments of the synchronization algorithm and binary difference algorithm described herein have execution time that is linear in a size of the version and space that is constant (depending on the size of the chunk and the anchor set). The reuse of calculated values between the algorithms saves computing time.
The described embodiments also illustrate the use of two memory hierarchies. The synchronization algorithm computes and temporarily stores a set of representation (e.g., hash) values for the input data, from which a set of distinguishing characteristics is derived for identifying similar data regions in the repository, and which distinguishing characteristics are stored in an index once the input data is deposited in the repository. The representation values of the input data in temporary storage can then be used in the binary difference algorithm for identifying exact data matches with the repository data. The binary difference algorithm computes a set of representation (e.g., hash) values for the data regions of interest in the repository, and temporarily stores such values in memory, for comparison with the representation values of the input data. By processing corresponding intervals of the repository data and input data, a relatively small amount of memory can be used for storing representation values. Also, the matched data segments are produced in positional order of input data, which saves on sorting time and storage requirements.
Furthermore, the embodiments described herein of the synchronization algorithm and binary difference algorithm scale to a petabyte size repository. In various embodiments, the ratio of the repository size to the index size is up to 250,000:1, enabling a 4 GB index to represent 1 PB repository, and enabling this index to fit into the memory of commercially-available, commodity-type computers. Where a hash table is used as the index, searching the index is a constant time and constant space O(1) operation, and makes the find process independent of the size of the repository, for repositories of up to 1 PB. If the repository is not limited to 1 PB, then a binary tree or B-tree can be used for the index. The size of the index is still smaller than the repository by a factor of 250,000:1, and searching the index is an operation that takes O(log(m/250,000)), where m is the size of the repository. For a 1 PB repository, m is 250, so log(m/250,000) is 32.
The systems and methods described herein can provide a data storage system that implements large-scale lossless data reduction of an input data with respect to a repository by partitioning the input data into parts that are in the repository and those that are not. The partitioning is done by a two-step process:
The embodiments of the binary difference algorithm described herein have a number of advantages. The matched distinguishing characteristics provided by the similarity search (of the index) form the frame of reference for the binary difference process, as well as the logical partitions within this frame (e.g., the anchors). The binary difference algorithm requires only one hash table, and this hash table is small, since it stores only one value for every seed of the repository data segment of interest. The representation values of the input data at every sub-seed step (e.g., byte) are known, since they were calculated during the index search. The incremental cost of the binary difference process is small, and it is linear in the size of the input data. Because the repository hash table is searched at every sub-seed interval (e.g., byte), the binary difference search finds misaligned data.
In various embodiments, the binary difference method can be used for performing a linear time and constant space O(1) process for comparing the input data and the region of the repository that were identified to be similar. The process uses previously calculated results of the similarity search, and only one repository hash table that is smaller than the identified region in the repository by a factor of the seed size. The binary difference process finds identical data even if it has been swapped or misaligned. It finds all identical data that is at least seed size length, where the hash table is sufficiently large. The process elicits a list of sub-regions in the input data that were found, in the order of their appearance in the input data.
Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with the scope of the invention being indicated by the appended claims.
Patent Citations
Non-Patent Citations
Referenced by
Legal Events
Original Image