About Dimitri Fontaine
Hi! My name is Dimitri. I have been using and contributing to Open Source Software for the best of the last twenty years. I took role as developer, maintainer, packager, release manager, software architect, database architect and administrator, sometimes devops. In the same time frame I also have started several companies (they are still thriving) with a strong Open Source business model, and I have been in manager positions at times too, including at the Executive level in big companies.
If you’ve read Charity Major’s Engineer/Manager Pendulum piece, there’s something to that in my career up to now, definitely. From the hacker guy to the CEO of a small company, from the PostgreSQL Major Contributor to the CTO of a big company.
In this place I share my PostgreSQL expertise. You will find about my projects of course, and the blog is full of interesting articles: have a try at Understanding Window Functions which has been helpful to many readers! This article is even part of a data driven series of post, the YeSQL category, check it out!
Also, I’m writing a book about Mastering PostgreSQL in Application Development, and you can subscribe to get sample content before anyone else and be the first to get the book when it’s available!
As a debian maintainer I also participated into building a PostgreSQL repository for all currently supported version of both PostgreSQL and debian, available at apt.postgresql.org, with Christoph Berg and Magnus Hagander.
My main project related to PostgreSQL these days is pgloader which allows loading data into PostgreSQL and include facilities to handle a full database migration from a live database connection!
pgloader is an awesome database migration tool that I wrote, open source and available at http://github.com/dimitri/pgloader. You can use it in a Continuous Integration environment and keep migrating your schema and data until your application tests all pass, then decide to go live with PostgreSQL!
$ pgloader mysql://[email protected]/dbname pgsql:///dbname
Also supported are SQLite and Microsoft® SQL Server. Email me if you want to add Oracle™ to the list!
The first step here is realizing that your database engine actually is part
of your application logic. Any SQL statement you write, even the simplest
possible, embeds some logic already: you are projecting a particular set
of columns, filtering the result to only a part of the available data set
(thanks to the
where clause), and you want to receive the result in a
known ordering. That already is business logic. Application code written