The document discusses how Grant Street Group uses Perl to power their online tax lien auctions and property tax payment systems. Key points:
- Tax lien auctions see 20 million bidders in 2011 placing over 30 billion bids, with auctions closing in under 20 seconds using random tie-breaking in Perl.
- Their property tax payment system handles up to 1 million parcels for large Florida counties, with sub-second search times and average user session times of only 4-9 minutes powered by Perl and MySQL.
- Converting a large county's tax roll database of 900,000 parcels and 5.6 million bills over 6 years to their system takes only 3 hours using a highly parallel Perl-
5. Grant Street GroupOnline Auctions of Property Tax LiensWeb-Based billing system for tax collectorsConversion of legacy tax-collector databasesOnline license / vehicle tag renewalsOnline payment processingAuctions of all types of bondsAnd lots, lots more!
7. Tax Lien AuctionsAbsolute feeding frenzyOur bidders threatened to exhaust TIN numbers20 million bidders in 2011More than 30 billion bids altogetherAverage was a 500,000-way tieAbout 2,000 auctions closing simultaneously
8. Tax Lien AuctionsHow do we award auctions performantly?Random tie-breaking with Crypt::RandomRandom row-ID plus MySQL = S L O WTurns out we can do it much faster in Perl
9. Tax Lien AuctionsNet result: auction closing takes 20 secondsBreaking 2,000 ties, each 500,000-wayStress-testing indicates can scale by 4xThe IRS definitely cannot scale by 4x
11. Property Tax Online PaymentsFlorida residents can pay the property taxHosted, customized sites per countyLargest counties have ~1,000,000 parcelsUsers are typical Florida residents
17. Property Tax Online PaymentsBackend is MySQL and SphinxLightning-fast searches with PerlMapping IDs to table, column, PKParsing SHOW STATUS LIKE sphinx%Lots of useful metadata!
18. Property Tax Online PaymentsNet results:Sub-second turnaround times9 minute average time on site by payers4 minute average time on site overall
20. Customer Data ConversionLargest county in FL is a customerPopulation ~2.4M peopleTax roll of ~900K parcelsHistory of ~5.6M bills across 6 yearsFull database is large (by our standards)Data files are ~30-50GBFull conversion is ~160 hours, using PerlMight be ~8 hours using pure SQL
21. Customer Data ConversionProblem is we cant use pure SQLRidiculous amounts of business logicUtterly different data modelsWere a Perl shop; Perl is our hammer
22. Customer Data ConversionHugely parallel data conversionSubdivide conversion into smaller stepsBuild hash of dependencies between stepsConstruct DAG of work units in MongoDBDistribute the actual workRun lots of Perl worker processesWorkers grab ready work unitsPerform the work unit sequentially
23. Customer Data ConversionThe end resultTotal conversion time ~3 hours with 80 workersNightly reloads now very practicalAble to resume incomplete loads