You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Haxl is a Haskell library that simplifies access to remote data, such
as databases or web-based services. Haxl can automatically
batch multiple requests to the same data source,
request data from multiple data sources concurrently,
cache previous requests,
memoize computations.
Having all this handled for you behind the scenes means that your
data-fetching code can be much cleaner and clearer than it would
otherwise be if it had to worry about optimizing data-fetching. We'll
give some examples of how this works in the pages linked below.
To use Haxl in your own application, you will likely need to build one or more
data sources: the thin layer between Haxl and the data that you want
to fetch, be it a database, a web API, a cloud service, or whatever.
There is a generic datasource in "Haxl.DataSource.ConcurrentIO" that
can be used for performing arbitrary IO operations concurrently, given
a bit of boilerplate to define the IO operations you want to perform.
The haxl-facebook package shows how we might build a Haxl data
source based on the existing fb package for talking to the Facebook
Graph API.
Where to go next?
The Story of Haxl
explains how Haxl came about at Facebook, and discusses our
particular use case.
An example Facebook data source walks
through building an example data source that queries the Facebook
Graph API concurrently.
Fun with Haxl (part 1)
Walks through using Haxl from scratch for a simple SQLite-backed
blog engine.
The N+1 Selects Problem explains how Haxl
can address a common performance problem with SQL queries by
automatically batching multiple queries into a single query,
without the programmer having to specify this behavior.