DBD::Gofer is the scalable stateless proxy driver for Perl DBI.
These are the slides for my lightning talk on DBD::Gofer given at the Italian Perl Workshop in 2008 (with a few extra slides added).
Slides for my talk at SkyCon'12 in Limerick.
Here I've squeezed four talks into one, covering a lot of ground quickly, so I've included links to more detailed presentations and other resources.
Slides for my Perl Memory Use talk at YAPC::Asia in Tokyo, September 2012.
(This uploaded version includes quite a few slides from the OSCON version that I skipped at YAPC::Asia in order to have more time for a demo.)
Slides for my talk at the London Perl Workshop in Nov 2013, featuring the Devel::SizeMe perl module.
See also the screencast at https://archive.org/details/Perl-Memory-Profiling-LPW2013
Slides of my talk on Devel::NYTProf and optimizing perl code at YAPC::NA in June 2014. It covers use of NYTProf and outlines a multi-phase approach to optimizing your perl code.
A video of the talk and questions is available at https://www.youtube.com/watch?v=T7EK6RZAnEA&list=UU7y4qaRSb5w2O8cCHOsKZDw
Application Logging in the 21st century - 2014.keyTim Bunce
Slides for my talk at the Austrian Perl Workshop in Salzburg on October 10th.
A video of the talk can be found at https://www.youtube.com/watch?v=4Qj-_eimGuE
Slides for my talk at SkyCon'12 in Limerick.
Here I've squeezed four talks into one, covering a lot of ground quickly, so I've included links to more detailed presentations and other resources.
Slides for my Perl Memory Use talk at YAPC::Asia in Tokyo, September 2012.
(This uploaded version includes quite a few slides from the OSCON version that I skipped at YAPC::Asia in order to have more time for a demo.)
Slides for my talk at the London Perl Workshop in Nov 2013, featuring the Devel::SizeMe perl module.
See also the screencast at https://archive.org/details/Perl-Memory-Profiling-LPW2013
Slides of my talk on Devel::NYTProf and optimizing perl code at YAPC::NA in June 2014. It covers use of NYTProf and outlines a multi-phase approach to optimizing your perl code.
A video of the talk and questions is available at https://www.youtube.com/watch?v=T7EK6RZAnEA&list=UU7y4qaRSb5w2O8cCHOsKZDw
Application Logging in the 21st century - 2014.keyTim Bunce
Slides for my talk at the Austrian Perl Workshop in Salzburg on October 10th.
A video of the talk can be found at https://www.youtube.com/watch?v=4Qj-_eimGuE
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Tim Bunce
The slides of my "State-of-the-art Profiling with Devel::NYTProf" talk at OSCON in July 2009.
I'll upload a screencast and give the link in a blog post at http://blog.timbunce.org
An overview of the main questions/design issues when starting to work with databases in Perl
- choosing a database
- matching DB datatypes to Perl datatypes
- DBI architecture (handles, drivers, etc.)
- steps of DBI interaction : prepare/execute/fetch
- ORM principles and difficulties, ORMs on CPAN
- a few examples with DBIx::DataModel
- performance issues
First given at YAPC::EU::2009 in Lisbon. Updated version given at FPW2011 in Paris and YAPC::EU::2011 in Riga
Roll Your Own API Management Platform with nginx and LuaJon Moore
We recently replaced a proprietary API management solution with an in-house implementation built with nginx and Lua that let us get to a continuous delivery practice in a handful of months. Learn about our development process and the overall architecture that allowed us to write minimal amounts of code, enjoying native code performance while permitting interactive codeing, and how we leveraged other open source tools like Vagrant, Ansible, and OpenStack to build an automation-rich delivery pipeline. We will also take an in-depth look at our capacity management approach that differs from the rate limiting concept prevalent in the API community.
Small Node.js proxy to turn a paginated JSON REST API into a CSV streaming download. Examples of code and patterns.
Presented at the London Node User Group meetup, April 2014
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Tim Bunce
The slides of my "State-of-the-art Profiling with Devel::NYTProf" talk at OSCON in July 2009.
I'll upload a screencast and give the link in a blog post at http://blog.timbunce.org
An overview of the main questions/design issues when starting to work with databases in Perl
- choosing a database
- matching DB datatypes to Perl datatypes
- DBI architecture (handles, drivers, etc.)
- steps of DBI interaction : prepare/execute/fetch
- ORM principles and difficulties, ORMs on CPAN
- a few examples with DBIx::DataModel
- performance issues
First given at YAPC::EU::2009 in Lisbon. Updated version given at FPW2011 in Paris and YAPC::EU::2011 in Riga
Roll Your Own API Management Platform with nginx and LuaJon Moore
We recently replaced a proprietary API management solution with an in-house implementation built with nginx and Lua that let us get to a continuous delivery practice in a handful of months. Learn about our development process and the overall architecture that allowed us to write minimal amounts of code, enjoying native code performance while permitting interactive codeing, and how we leveraged other open source tools like Vagrant, Ansible, and OpenStack to build an automation-rich delivery pipeline. We will also take an in-depth look at our capacity management approach that differs from the rate limiting concept prevalent in the API community.
Small Node.js proxy to turn a paginated JSON REST API into a CSV streaming download. Examples of code and patterns.
Presented at the London Node User Group meetup, April 2014
CouchDB for Web Applications - Erlang Factory London 2009Jason Davies
CouchDB is built "of the Web" and it's very exciting to convert the immense
power that CouchDB provides into a usable, real-world Web application. In this
talk I cover case studies of real-world applications that use CouchDB,
including some that can be served from CouchDB itself, and how CouchDB can
shape your Web applications to be highly scalable and flexible by embracing
HTTP philosophies, JavaScript and schemaless documents.
Apache Oozie has come a long way and now accounts for over 2.8 Million jobs per month on Yahoo's grid infrastructure. If you are running Hadoop jobs repeatedly and thinking of a smarter way of doing it, Apache Oozie is the answer. Be it running complex data transformation jobs chained one after another or simple daily data copy, Oozie workflows will help you to manage these tasks efficiently. Mona will cover the new features introduced in Apache Oozie 4.x, in particular, Apache HCatalog Integration, Job Notifications and SLA Monitoring for building large-scale and efficient data processing pipelines.
In this talk Ben will walk you through running Cassandra in a docker environment to give you a flexible development environment that uses only a very small set of resources, both locally and with your favorite cloud provider. Lessons learned running Cassandra with a very small set of resources are applicable to both your local development environment and larger, less constrained production deployments.
Going Serverless on AWS with Golang and SAMGeorge Tourkas
Intro to AWS Fully Managed (aka "Serverless") Services for Developers focusing on Lambda. Development Lifecycle (Code, Locally Run/Debug, Deploy) of Golang Lambda Handlers/Functions with SAM. Basic Performance and Cost analysis.
Description of some of the elements that go in to creating a PostgreSQL-as-a-Service for organizations with many teams and a diverse ecosystem of applications and teams.
"Drupal is always so fast!" ... said no one, ever.
Drupal has a reputation as being a slow CMS, but that reputation is undeserved; there are many small things that impact a Drupal site's performance in sometimes substantial ways. This session will highlight many 'quick wins' that will get your site performing like a champ in no time!
Then we'll take a demonstration site that has many elements of real-world 'slow' Drupal sites, show how to do a quick performance evaluation/triage, and change the site from loading in 4-5 seconds to loading in less than a second, and maxing out at 2 requests per second to a speedy 4,000+ requests per second!
The session will also discuss the importance of a plan, benchmarking, and assumptions when you do performance work on your own Drupal site.
Slides of my Perl 6 DBDI (database interface) talk at YAPC::EU in August 2010. Please also see the fun screencast that includes a live demo of perl6 using a perl5 DBI driver: http://timbunce.blip.tv/file/3973550/
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Tim Bunce
Slides of my talk on Devel::NYTProf and optimizing perl code at the Italian Perl Workshop (IPW09). It covers the new features in NYTProf v3 and a new section outlining a multi-phase approach to optimizing your perl code.
30 mins long plus 10 mins of questions. Best viewed fullscreen.
An update of my Perl Myths talk (for http://ossbarcamp.com in Dublin, Ireland, September 2009). It covers jobs, cpan, community, best practices, power tools, and perl 6.
Slides of my talk about the DashProfiler perl module, which enables lightweight always-on performance monitoring for critical sections of code. See
http://search.cpan.org/perldoc?DashProfiler
Perl Myths 200802 with notes (OUTDATED, see 200909)Tim Bunce
Perl programming has it's share of myths. This presentation debunks a few popular ones with hard facts. Surprise yourself with the realities.
THIS VERSION IS OUTDATED. PLEASE SEE http://www.slideshare.net/Tim.Bunce/perl-myths-200909
12 Conversion Rate Optimization Strategies for Ecommerce Websites.pdfSOFTTECHHUB
Did you know that the average ecommerce conversion rate is a mere 2.86%? That means for every 100 visitors to an online store, only about 3 make a purchase. With so much competition and an ever-increasing number of online shoppers, optimizing your website for higher conversions is crucial for the success of your ecommerce business.
In this comprehensive guide, we'll dive into 12 powerful conversion rate optimization (CRO) strategies that can help you turn more website visitors into paying customers. From improving website speed and optimizing for mobile devices to leveraging social proof and utilizing analytics, we'll cover actionable tips and best practices to help you maximize your ecommerce website's potential.
Premium MEAN Stack Development Solutions for Modern BusinessesSynapseIndia
Stay ahead of the curve with our premium MEAN Stack Development Solutions. Our expert developers utilize MongoDB, Express.js, AngularJS, and Node.js to create modern and responsive web applications. Trust us for cutting-edge solutions that drive your business growth and success.
Know more: https://www.synapseindia.com/technology/mean-stack-development-company.html
Affordable Stationery Printing Services in Jaipur | Navpack n PrintNavpack & Print
Looking for professional printing services in Jaipur? Navpack n Print offers high-quality and affordable stationery printing for all your business needs. Stand out with custom stationery designs and fast turnaround times. Contact us today for a quote!
Business Valuation Principles for EntrepreneursBen Wann
This insightful presentation is designed to equip entrepreneurs with the essential knowledge and tools needed to accurately value their businesses. Understanding business valuation is crucial for making informed decisions, whether you're seeking investment, planning to sell, or simply want to gauge your company's worth.
Textile Olympiad 𝟯.𝟬 Supported by The Business Standard and Textile Today: 𝗔𝗻 𝗜𝗻𝘁𝗲𝗿 𝗨𝗻𝗶𝘃𝗲𝗿𝘀𝗶𝘁𝘆 Business 𝗖𝗮𝘀𝗲 𝗖𝗼𝗺𝗽𝗲𝘁𝗶𝘁𝗶𝗼𝗻 where university undergraduates get to showcase their brilliance. Dive deep into real-world textile industry challenges, analyze intricate scenarios, and craft innovative solutions.
"𝑩𝑬𝑮𝑼𝑵 𝑾𝑰𝑻𝑯 𝑻𝑱 𝑰𝑺 𝑯𝑨𝑳𝑭 𝑫𝑶𝑵𝑬"
𝐓𝐉 𝐂𝐨𝐦𝐬 (𝐓𝐉 𝐂𝐨𝐦𝐦𝐮𝐧𝐢𝐜𝐚𝐭𝐢𝐨𝐧𝐬) is a professional event agency that includes experts in the event-organizing market in Vietnam, Korea, and ASEAN countries. We provide unlimited types of events from Music concerts, Fan meetings, and Culture festivals to Corporate events, Internal company events, Golf tournaments, MICE events, and Exhibitions.
𝐓𝐉 𝐂𝐨𝐦𝐬 provides unlimited package services including such as Event organizing, Event planning, Event production, Manpower, PR marketing, Design 2D/3D, VIP protocols, Interpreter agency, etc.
Sports events - Golf competitions/billiards competitions/company sports events: dynamic and challenging
⭐ 𝐅𝐞𝐚𝐭𝐮𝐫𝐞𝐝 𝐩𝐫𝐨𝐣𝐞𝐜𝐭𝐬:
➢ 2024 BAEKHYUN [Lonsdaleite] IN HO CHI MINH
➢ SUPER JUNIOR-L.S.S. THE SHOW : Th3ee Guys in HO CHI MINH
➢FreenBecky 1st Fan Meeting in Vietnam
➢CHILDREN ART EXHIBITION 2024: BEYOND BARRIERS
➢ WOW K-Music Festival 2023
➢ Winner [CROSS] Tour in HCM
➢ Super Show 9 in HCM with Super Junior
➢ HCMC - Gyeongsangbuk-do Culture and Tourism Festival
➢ Korean Vietnam Partnership - Fair with LG
➢ Korean President visits Samsung Electronics R&D Center
➢ Vietnam Food Expo with Lotte Wellfood
"𝐄𝐯𝐞𝐫𝐲 𝐞𝐯𝐞𝐧𝐭 𝐢𝐬 𝐚 𝐬𝐭𝐨𝐫𝐲, 𝐚 𝐬𝐩𝐞𝐜𝐢𝐚𝐥 𝐣𝐨𝐮𝐫𝐧𝐞𝐲. 𝐖𝐞 𝐚𝐥𝐰𝐚𝐲𝐬 𝐛𝐞𝐥𝐢𝐞𝐯𝐞 𝐭𝐡𝐚𝐭 𝐬𝐡𝐨𝐫𝐭𝐥𝐲 𝐲𝐨𝐮 𝐰𝐢𝐥𝐥 𝐛𝐞 𝐚 𝐩𝐚𝐫𝐭 𝐨𝐟 𝐨𝐮𝐫 𝐬𝐭𝐨𝐫𝐢𝐞𝐬."
Matt Conway - Attorney - A Knowledgeable Professional - Kentucky.pdfMatt Conway - Attorney
After completing his law degree at the Brandeis School of Law at the University of Louisville, Matt Conway (Attorney) embarked on a varied career that has included roles in real estate law, public prosecution, and private practice. Find out more about him at his official site https://mattconway.net/
Taurus Zodiac Sign_ Personality Traits and Sign Dates.pptxmy Pandit
Explore the world of the Taurus zodiac sign. Learn about their stability, determination, and appreciation for beauty. Discover how Taureans' grounded nature and hardworking mindset define their unique personality.
Lars Winkelbauer — Sustainable Development in the Era of Air Cargo Technologylarswinkelbauer23
In the contemporary world, the air cargo industry plays a pivotal role in global trade and commerce. With technological advancements shaping the industry, there is a growing emphasis on sustainable development to minimize environmental impact. This article delves into the realm of air cargo technology and sustainable practices, shedding light on the initiatives and innovations driving the industry towards a greener future. Additionally, Lars Winkelbauer — Navigating the Ethical Landscape: AI in Sustainable Development — provides insightful perspectives on ensuring ethical considerations are integrated into the adoption of these technological advancements.
IPTV Subscription UK: Your Guide to Choosing the Best ServiceDragon Dream Bar
"IPTV Subscription UK" (Internet Protocol Television) has revolutionized the way people watch TV, offering a vast array of channels and on-demand content delivered over the internet. If you’re considering an IPTV subscription in the UK, here’s a comprehensive guide to help you choose the best service for your needs.
As a business owner in Delaware, staying on top of your tax obligations is paramount, especially with the annual deadline for Delaware Franchise Tax looming on March 1. One such obligation is the annual Delaware Franchise Tax, which serves as a crucial requirement for maintaining your company’s legal standing within the state. While the prospect of handling tax matters may seem daunting, rest assured that the process can be straightforward with the right guidance. In this comprehensive guide, we’ll walk you through the steps of filing your Delaware Franchise Tax and provide insights to help you navigate the process effectively.
RMD24 | Debunking the non-endemic revenue myth Marvin Vacquier Droop | First ...BBPMedia1
Marvin neemt je in deze presentatie mee in de voordelen van non-endemic advertising op retail media netwerken. Hij brengt ook de uitdagingen in beeld die de markt op dit moment heeft op het gebied van retail media voor niet-leveranciers.
Retail media wordt gezien als het nieuwe advertising-medium en ook mediabureaus richten massaal retail media-afdelingen op. Merken die niet in de betreffende winkel liggen staan ook nog niet in de rij om op de retail media netwerken te adverteren. Marvin belicht de uitdagingen die er zijn om echt aansluiting te vinden op die markt van non-endemic advertising.
It is therefore essential to employ other water sources, such as river water, for consumption by humans. Commercial RO Plant purifiers manufactured by Netsol Water are necessary because a different type of water is completely unsuitable for human consumption. Large-scale water filtration is accomplished with the assistance of a Noida-based commercial RO plant manufacturer i.e., Netsol Water. It supports several methods for getting rid of all kinds of contaminants in water.
3. New Layers
Application Gofer Transport
DBI DBI
DBD::Gofer DBD::Foo
Gofer Transport Database API
Database
4. Gofer gives you...
Few
Application round-trips Gofer Transport
DBI DBI
DBD::Gofer DBD::Foo
Gofer Transport
Stateless
protocol Server-side
Database DBD caching
Client-side only needed
caching on server
Pluggable
Retry on Configure transports Flexible and easy to extend
error via DSN ssh, http, etc... e.g. DBIx::Router
5. DBD::Proxy vs DBD::Gofer
DBD::Proxy DBD::Gofer
Supports transactions ✓ ✗(not yet)
Supports very large results ✓ ✗(memory)
Large test suite ✗ ✓
Minimal round-trips ✗ ✓
Automatic retry on error ✗ ✓
Modular & Pluggable classes ✗ ✓
Tunable via Policies ✗ ✓
Scalable ✗ ✓
Connection pooling ✗ ✓
Client-side caching ✗ ✓
Server-side caching ✗ ✓
6. Gofer, logically
• Gofer is
- A scalable stateless proxy architecture for DBI
- Transport independent
- Highly configurable on client and server side
- Efficient, in CPU time and minimal round-trips
- Well tested
- Scalable
- Cacheable
- Simple and reliable
7. Gofer, structurally
• Gofer is
- A simple stateless request/response protocol
- A DBI proxy driver: DBD::Gofer
- A request executor module
- A set of pluggable transport modules
- An extensible client configuration mechanism
• Development sponsored by Shopzilla.com
8. Gofer Protocol
• DBI::Gofer::Request & DBI::Gofer::Response
• Simple blessed hashes
- Request contains all required information to
connect and execute the requested methods.
- Response contains results from methods calls,
including result sets (rows of data).
• Serialized and transported by transport
modules like DBI::Gofer::Transport::http
9. Using DBD::Gofer
• Via DSN
- By adding a prefix
$dsn = “dbi:Driver:dbname”;
$dsn = “dbi:Gofer:transport=foo;dsn=$dsn”;
• Via DBI_AUTOPROXY environment variable
- Automatically applies to all DBI connect calls
$ export DBI_AUTOPROXY=“dbi:Gofer:transport=foo”;
- No code changes required!
10. Gofer Transports
• DBI::Gofer::Transport::null
- The ‘null’ transport.
- Serializes request object,
transports it nowhere,
then deserializes and passes it to
DBI::Gofer::Execute to execute
- Serializes response object,
transports it nowhere,
then deserializes and returns it to caller
- Very useful for testing.
DBI_AUTOPROXY=“dbi:Gofer:transport=null”
11. Gofer Transports
• DBD::Gofer::Transport::stream (ssh)
- Can ssh to remote system to self-start server
ssh -xq user@host.domain
perl -MDBI::Gofer::Transport::stream
-e run_stdio_hex
- Automatically reconnects if required
- ssh gives you security and optional compression
DBI_AUTOPROXY=’dbi:Gofer:transport=stream
;url=ssh:user@host.domain’
12. Gofer Transports
• DBD::Gofer::Transport::http
- Sends requests as http POST requests
- Server typically Apache mod_perl running
DBI::Gofer::Transport::http
- Very flexible server-side configuration options
- Can use https for security
- Can use web techniques for scaling and high-
availability. Will support web caching.
DBI_AUTOPROXY=’dbi:Gofer:transport=http
;url=http://example.com/gofer’
13. Gofer Transports
• DBD::Gofer::Transport::gearman
- Distributes requests to a pool of workers
- Gearman a lightweight distributed job queue
http://www.danga.com/gearman
- Gearman is implemented by the same people who
wrote memcached, perlbal, mogileFS, & DJabberd
DBI_AUTOPROXY=’dbi:Gofer:transport=gearman
;url=http://example.com/gofer’
14. Pooling via gearman vs http
• I haven’t compared them in use myself yet
+ Gearman may have lower latency
+ Gearman spreads load over multiple machines
without need for load-balancer
+ Gearman coalescing may be beneficial
+ Gearman async client may work well with POE
- Gearman clients need to be told about servers
• More gearman info http://danga.com/words/
2007_04_linuxfest_nw/linuxfest.pdf (p61+)
15. DBD::Gofer
• A proxy driver
• Aims to be as ‘transparent’ as possible
• Accumulates details of DBI method calls
• Delays forwarding request for as long as
possible
• execute_array() is a single round-trip
• Policy mechanism allows fine-grained tuning
to trade transparency for speed
16. DBD::Gofer::Policy::*
• Three policies supplied: pedantic, classic, and
rush. Classic is the default.
• Policies are implemented as classes
• Currently 22 individual items within a policy
• Policy items can be dynamic methods
• Policy is selected via DSN:
DBI_AUTOPROXY=“dbi:Gofer:transport=null
;policy=pedantic”
17. Round-trips per Policy
pedantic classic rush
$dbh = DBI->connect_cached connect() ✓
$dbh->ping ✓
if not if not
$dbh->quote ✓ default default
$sth = $dbh->prepare ✓
$sth->execute ✓ ✓ ✓
$sth->{NUM_OF_FIELDS}
$sth->fetchrow_array
cached
$dbh->tables ✓ ✓ after first
18. Error Handling
• DBD::Gofer can automatically retry on failure
DBI_AUTOPROXY=“dbi:Gofer:transport=...;
retry_limit=3”
• Default behaviour is to retry if
$request->is_idemponent is true
- looks at SQL, returns true for most SELECTs
• Default is retry_limit=0, so disabled
• You can define your own behaviour:
DBI->connect(..., {
go_retry_hook => sub { ... },
});
19. Client-side Caching
• DBD::Gofer can automatically cache results
DBI_AUTOPROXY=“dbi:Gofer:transport=null
;cache=CacheModuleName”
• Default behaviour is to cache if
$request->is_idemponent is true
looks at SQL returns true for most SELECTs
• Use any cache module with standard interface
set($k,$v) and get($k)
• You can define your own behaviour by
subclassing
20. Server-side Caching
• DBI::Gofer::Transport::* can automatically
cache results
• Use any cache module with standard interface
- set($k,$v) and get($k)
• You can define your own behaviour by
subclassing
21. Gofer Caveats
• Adds latency time cost per network round-trip
- Can minimize round-trips by fine-tuning a policy
- and/or using client-side caching
• State-less-ness has implications...
- No transactions, AutoCommit only, at the moment.
- Can’t alter $dbh attributes after connect
- Can’t use temp tables, locks, and other per-connection
persistent state, except within a stored procedure
- Code using last_insert_id needs a (simple) change
- See the docs for a few other very obscure caveats
26. Load Balance and Cache
Load balancing
server and fail-over
Apache running DBI Gofer
with
40
workers
Far fewer db
HTTP Load Balancer and Cache
connections
Workers
x Many = 6000 db
150 web Gofer Database
connections
servers Servers Server
servers
Apache running DBI Gofer
Workers
Caching
- New middle tier
Caching
27.
28. Gofer’s Future
• Caching for http transport
• Optional JSON serialization
• Caching in DBD::Gofer (now done)
• Make state-less-ness of transport optional
to support transactions
• Patches welcome!
29. Future: http caching
• Potential big win
• DBD::Gofer needs to indicate cache-ability
- via appropriate http headers
• Server side needs to agree
- and respond with appropriate http headers
• Caching then happens just like for web pages
- if there’s a web cache between client and server
• Patches welcome!
30. Future: JSON
• Turns DBI into a web service!
- Service Oriented Architecture anyone?
• Accessible to anything that can talk JSON
• Clients could be JavaScript, Java, ...
- and various languages that begin with P ...
• Patches welcome!
31. Future: Transactions
• State-less-ness could be made optional
- If transport layer being used agrees
- Easiest to implement for stream / ssh
• Would be enabled by
AutoCommit => 0
$dbh->begin_work
• Patches welcome!