Skip navigation links

spacer

Developer Articles spacer

MySQL 5.6 Replication - Enabling the Next Generation of Web & Cloud Services

(2012.04.10)
by Mat Keep
The new MySQL 5.6.5 Development Milestone Release (DMR) introduces a much anticipated feature - Global Transaction Identifiers (GTIDs) for MySQL replication. GTIDs make it simple to track and compare replication progress between the master and slave servers. This enables much simpler recovery from failures of the master, while also introducing great flexibility in the provisioning and on-going management of multi-tier or ring (circular) replication topologies.

MySQL Cluster 7.2 GA Released, Delivers 1 BILLION Queries per Minute

(2012.02.15)
by Mat Keep
Oracle is delighted to announce the immediate availability of the production-ready, GA release of MySQL Cluster 7.2, available for download under the GPL, and as part of the commercial MySQL Cluster Carrier Grade Edition, including management tools, product certifications and 24x7 global support. New benchmarks demonstrate MySQL Cluster's ability to support the most demanding web and telecoms workloads, while maintaining 99.999% availability. MySQL Cluster delivered 1 billion queries per minute (17.6 million queries per second), scaled-out across 8 x commodity Intel x86 server nodes, accessed by the NoSQL C++ NDB API.

MySQL's latest InnoDB engine can now do extensive, high-performance, full text search. (Dr. Dobb's)

(2011.11.08)
by Jimmy Yang & John Russell
Oracle recently provided access to many new MySQL 5.6 features through labs.mysql.com for the user community to test and comment on. One notable feature is the InnoDB Full-Text Search (FTS) engine. It lets users build FULLTEXT indexes on InnoDB tables to represent text-based content and speed up searches for words and phrases.

MySQL Cluster 7.2 (DMR2): NoSQL, Key/Value, Memcached

(2011.10.03)
by Mat Keep
MySQL Cluster is one of the fastest growing technologies available from MySQL today. To build on this momentum, we are announcing the second Development Milestone Release (DMR) at Oracle Open World 2011. The MySQL Cluster 7.2.1 builds upon the first DMR (7.2.0) announced in April 2011 with a range of new capabilities designed to enable next generation web services, enhance cross data center scalability and simplify provisioning.

MySQL 5.6 - (Early Access Features) - InnoDB and Replication!

(2011.07.27)
by Rob Young
MySQL 5.5 has been widely acknowledged to be the best release in the history of MySQL. And, in April 2011, we raised the bar again with Development Milestone Release (DMR) and Early Access (Labs) releases of MySQL 5.6. John Russell did an excellent job of summarizing the features in the "What's New in 5.6" devzone article he posted in April. At OSCON 2011, we are delivering more early access (labs) features for InnoDB and Replication features. These features are focused on better scalability, performance and flexibility. We look forward to community testing and feedback.

Globalizing MySQL - Interview with Alexander "Bar" Barkov

(2011.07.18)
by Paul DuBois
We interviewed Alexander "Bar" Barkov to discuss the recent improvements in MySQL globalization that enable MySQL users around the world to use the database system more easily and naturally.

MySQL 5.5: Pluggable Authentication API: Interview with Georgi "Joro" Kodinov

(2011.04.29)
by Alex Roedling
We talked to Georgi "Joro" Kodinov to discuss the MySQL 5.5 Pluggable Authentication API which enables MySQL to access external authentication sources.

Introducing the MySQL Installer for Windows

(2011.04.11)
by Mike Zinner
The MySQL Installer for Windows radically simplifies the installation process for all MySQL users on the Windows platform. It only takes minutes from downloading the MySQL Installer to having a ready to use MySQL system on your machine. An easy to use - wizard based - UI will guide you through the installation process. You can select which products you want to have installed on your machine. After the file installation you can configure your system and setup your MySQL server. MySQL Installer also helps you to keep your system up-to-date by offering a simple "Check for Updates" feature. If you choose to run this feature the MySQL Installer will connect to the MySQL.com webpage to check if new versions of your MySQL products are available. Those will then be downloaded and installed with a single mouse click. The MySQL Installer will run on all Windows platforms that are supported by MySQL.

What's New in MySQL 5.6

(2011.04.11)
by John Russell
With MySQL 5.5 generally available and being deployed all over the planet, the architects and strategists can start looking ahead to the exciting new thing with "SQL" in its name: MySQL 5.6. MySQL 5.6 builds on the momentum of 5.5, and Oracle's investment and commitment to MySQL, by delivering better performance and scalability.

NoSQL to MySQL with Memcached

(2011.04.11)
by Mat Keep
The ever increasing performance demands of web-based services has generated significant interest in providing NoSQL access methods to MySQL - enabling users to maintain all of the advantages of their existing relational database infrastructure, while providing blazing fast performance for simple queries, using an API to complement regular SQL access to their data. The HandlerSocket development at DeNA is a great example of community innovation, with a solution implemented as a custom plug-in and protocol for the MySQL server daemon. We are hearing the community say they want NotOnly SQL - they want their trusted SQL RDBMS - plus, they want NoSQL techniques to access that data. So, we are previewing our NotOnlySQL solution for MySQL - delivered via memcached - with implementations to access both the InnoDB and MySQL Cluster (NDB) storage engines.

MySQL Cluster 7.2 Labs & Development Milestone Release - NoSQL with Memcached and 20x Higher JOIN Performance

(2011.04.11)
by Mat Keep
The announcements at the Oracle Collaborate and O’Reilly MySQL conferences mark an exciting milestone in the development of the MySQL Cluster database. MySQL Cluster is already proven as a write-scalable, real-time transactional database, combining 99.999% availability with the low TCO of open source. With a distributed, multi-master architecture and no single point of failure, MySQL Cluster scales horizontally on commodity hardware to serve read and write intensive workloads. With these enhancements announced in the Development Milestone Release, MySQL Cluster can be extended to serve a broader range of workloads.

When the IOUG Meets the MySQL Community - Interview with Andy Flower, Sarah Novotny, Lenz Grimmer and Dave Stokes

(2011.03.09)
by Wei-Chen Chiu
In light with the formation of the MySQL Council under the IOUG (Independent Oracle User Group) and two upcoming conferences with a lot of MySQL content - Collaborate 11 and O'Reilly MySQL Conference, we talked to Andy Flower, President of IOUG, Sarah Novotny, recognized MySQL community member and the Council Chair, as well as Lenz Grimmer and Dave Stokes, MySQL community managers at Oracle, on their thoughts and takes of the IOUG and the MySQL community.

MySQL 5.5 Does Windows - Oracle TechCast Live with Mike Frank

(2011.01.25)
by Justin Kestelyn, Oracle TechCast Live
Recorded Live Interview of Product Manager Mike Frank who explains why MySQL 5.5 offers the best performance on Windows yet.

MySQL 5.5 is GA - Interview with Tomas Ulin

(2010.12.15)
by Rich Schwerin, Oracle Magazine
Oracle Magazine features editor Rich Schwerin interviews Tomas Ulin, Vice President, MySQL Engineering, who answers questions about the GA release of MySQL 5.5.

What's New in the MySQL Enterprise Spring 2010 Release? - Interview with Mark Matthews and Andy Bang

(2010.05.17)
by Mark Matthews and Andy Bang
We talked to Mark Matthews and Andy Bang, two core developers in the MySQL Enterprise Monitor team, to give us some insight into the new features in the latest MySQL Enterprise Release.

Introduction to MySQL 5.5

(2010.04.13)
by John Russell

It's been a busy year for MySQL. Perhaps you've heard. Here are some recent improvements to the speed, scalability, and user-friendliness of the MySQL database and the InnoDB storage engine that we think deserve their own headlines. Now is a great time to beta test the 5.5 release and give feedback to the MySQL engineering team.

A deep look at MySQL 5.5 partitioning enhancements

(2009.12.24)
by Giuseppe Maxia
The release of MySQL 5.5 has brought several enhancements. While most of the coverage went, understandably, to the semi-synchronous replication, the enhancements of partitioning were neglected, and sometimes there was some degree of misunderstanding on their true meaning. With this article, we want to explain these cool enhancements, especially the parts that were not fully understood.

Tino Rachui: Using MySQL Cluster in Sun's Virtual Desktop Infrastructure

(2009.11.10)
by Lenz Grimmer
Sun Virtual Desktop Infrastructure (VDI3) is a desktop virtualization technology that provides virtual desktop access, brokering, and hosting, enabling Windows, OpenSolaris, or Linux virtual desktops. These desktops can be accessed by using existing PCs, Macs or thin clients such as Sun Ray.

What's New in the MySQL Enterprise Fall 2009 Release? - Interview with Mark Matthews and Andy Bang

(2009.09.08)
by Mark Matthews and Andy Bang
We talked to Mark Matthews and Andy Bang, two core developers in the MySQL Enterprise Monitor team, to give us some insight into the new features in the latest MySQL Enterprise Release. You can find more about the MySQL Query Analyzer in our previous interview with Mark Matthews.

MySQL Developer, meet “Quan” (aka the MySQL Query Analyzer)

(2009.05.15)
by Rob Young
The MySQL Query Analyzer ("Quan") is designed to save development time on query coding and tuning by expanding on all of the good things found in the Slow Query Log, SHOW PROCESSLIST; EXPLAIN plan, and 5.1 profiler all with no dependence of any of these atomic things. To this end, we integrated Quan into the Enterprise Monitor so developers can monitor security, performance, availability AND all of their queries across all their MySQL servers from a single, consolidated view.

Why Move to MySQL from Microsoft SQL Server?

(2009.05.04)
by Robin Schumacher
Before we get started, let me say that I always liked being a SQL Server DBA. My database experience started with DB2, then Teradata, followed by Oracle, and then SQL Server (and then a little bit of Sybase after that, followed by MySQL). Coming from the other databases, I found SQL Server the easiest and quickest to learn at the time, but of course, a lot of that had to do with the fact that Microsoft was really the only database vendor around then (I started with version 4.2 of SQL Server) that shipped any decent GUI management tools with their server. Take the tools away, and you basically had Sybase on Windows with the ISQL command line tool, which was not pretty by any means.

Installing MySQL Connector/C++ from Source

(2009.04.15)
by Giri Mandalika
This HOW-To document outlines the build-time dependencies, and shows the steps involved in building the MySQL Connector/C++ from the source code.

Developing Database Applications Using MySQL Connector/C++

(2009.04.15)
by Giri Mandalika
The MySQL Connector/C++ provides an object-oriented application programming interface (API) and a database driver for connecting C++ applications to the MySQL Server. Connector/C++ implemented a significant percentage of the industry standard JDBC 4.0 specification in C++ world. This technical article shows the essential steps to build and install MySQL Connector/C++ driver, with simple examples to connect, insert, and retrieve data from a MySQL database. Application developers who are new to MySQL Connector/C++ but not to C++ programming and MySQL database, are the target audience.

Getting started with DTracing MySQL

(2009.03.05)
by Amit Saha
DTrace is a dynamic tracing facility built into the Solaris and Open Solaris operating systems and can be used by system administrators and developers alike to observe the runtime behavior of user level programs and of the operating system itself. On one hand, DTrace can be used to identify potential bottlenecks in the running processes on a production system and on the other DTrace can help you understand the runtime behavior of an external program such as MySQL better.

Exception Error Handling Implementation in MySQL/VB.NET Windows Database Applications

(2009.02.10)
by Ernest Bonat, Ph.D.
Error handling implementation in Windows database applications is a must for any Application Developer today. The main idea of error handling is to avoid application crashes by finding out the occurred errors and fixing them. Different programming languages have different ways of implementing error handling. Microsoft Visual Basic .NET (VB.NET) is the most common programming language for developing windows database applications today. VB.NET codes are provided in many websites, books and materials without error handling implementation. In this article I would like to introduce you to the basics of error handling implementation in MySQL/VB.NET windows database applications. I’ll be covering structured exception error handling, which was introduced for the first time in VB.NET 2002. I will also go over the latest technologies of disposing unmanaged recourses in .NET Framework with the Using statement. To write exception errors to a log text file, a generic procedure will be developed while MySQL data is loading, inserting, updating and deleting.

Another Look at MySQL 5.1’s SQL Diagnostic Tools

(2009.01.26)
by Robin Schumacher
Prior to MySQL 5.1, it wasn’t all that easy to find the worst running SQL on a MySQL instance. And truth be told, MySQL still has a ways to go before it’s an effortless process. But, the good news is there are some new aids in MySQL 5.1 and MySQL Enterprise that do make it more efficient to find and troubleshoot bad SQL code that’s hiding inside a MySQL instance. Let’s take a quick tour through these new features and see what help they provide.

Allan Packer on performance tuning: Scaling MySQL

(2009.01.22)
by Lenz Grimmer
A year ago this past week (on January 16, 2008), Sun Microsystems announced a historic deal to acquire MySQL AB for a billion dollars. Since then, MySQL-ers (aka Sun Dolphins) have settled in with Sun folks. While Sun has had an influence on MySQL, MySQL has also had an influence on several projects within "Sun Classic". Over this week, we hope to explore some of the projects around Sun which use MySQL and how the acquisition has helped bring us all closer together. Today we talk to Allan Packer, Principal Engineer in the Performance Technologies group at Sun Microsystems and team lead for the MySQL Performance & Scalability Project.

Neelakanth Nadgir on MySQL and ZFS: A File System Revolution

(2009.01.21)
by Duleepa "Dups" Wijayawardhana
A year ago this past week (on January 16, 2008), Sun Microsystems announced a historic deal to acquire MySQL AB for a billion dollars. Since then, MySQL-ers (aka Sun Dolphins) have settled in with Sun folks. While Sun has had an influence on MySQL, MySQL has also had an influence on several projects within "Sun Classic". Over this week, we hope to explore some of the projects around Sun which use MySQL and how the acquisition has helped bring us all closer together. Today we talk to Neelakanth Nadgir in the Sun/MySQL Performance Team about MySQL and ZFS, the revolutionary file system included with Solaris and OpenSolaris operating systems from Sun.

Detlef Ulherr and Thorsten Früauf on Open HA Cluster: Making MySQL highly available on Solaris

(2009.01.20)
by Lenz Grimmer
A year ago this past week (on January 16, 2008), Sun Microsystems announced a historic deal to acquire MySQL AB for a billion dollars. Since then, MySQL-ers (aka Sun Dolphins) have settled in with Sun folks. While Sun has had an influence on MySQL, MySQL has also had an influence on several projects within "Sun Classic". Over this week, we hope to explore some of the projects around Sun which use MySQL and how the acquisition has helped bring us all closer together. Today we talk to Detlef Ulherr and Thorsten Fruehauf, engineers working on Solaris Cluster and its Open Source sibling, Open HA Cluster.

Vince Carbone on MySQL and DTrace: Dynamically tracing better performance

(2009.01.19)
by Duleepa "Dups" Wijayawardhana
A year ago this past week (on January 16, 2008), Sun Microsystems announced a historic deal to acquire MySQL AB for a billion dollars. Since then, MySQL-ers (aka Sun Dolphins) have settled in with Sun folks. While Sun has had an influence on MySQL, MySQL has also had an influence on several projects within "Sun Classic". Over this week, we hope to explore some of the projects around Sun which use MySQL and how the acquisition has helped bring us all closer together. Today we talk to Vince Carbone in Sun's Performance Technology Group about MySQL with DTrace, the dynamic tracing application that is part of Solaris and OpenSolaris and set to be a hot topic at the 2009 MySQL User Conference.

Interview with Lars Heill, Release Engineering Manager

(2008.12.18)
by Lenz Grimmer
Born in Northern Norway 41 years ago and Lars has lived in Trondheim for the last 22 years. He is a Physicist by education, has a master degree on semiconductor heterojunctures and has earned a PhD on high temperature superconductors. He worked briefly on nuclear power fuel optimization and petroleum related rock mechanics before joining Clustra in the year 2000, which was acquired by Sun Microsystems in 2002. Clustra was a database software vendor that specialized in clustered, high-availability databases that were required by telecoms and service providers.

Interview with Alexander "Salle" Keremidarski, 2008

(2008.12.09)
by Duleepa "Dups" Wijayawardhana
Alexander "Salle" Keremidarski works as the Manager of EMEA Support for MySQL and is one of MySQL's longest serving employees. This isn't Salle's first interview on the Devzone, but seeing as how it's been a couple of years, we thought we'd catch up with Salle and see how things are going.

Interview with Adam Donnison, web developer at MySQL.com

(2008.11.25)
by Lenz Grimmer
Adam has been in IT now for more than a quarter of a century, variously as a programmer, systems analyst, database admin and consultant. The first job Adam had was writing software for cash registers in assembler, and back end software in C and COBOL on UNIX. Adam is active in a number of open source projects and is the admin of dotProject. He now works in the web team which is responsible for maintaining the mysql.com web sites.

Logging Game Downloads With Partitioning

(2008.11.24)
by Ryan Thiessen, DBA Lead at Big Fish Games
Big Fish Games, Inc. develops, publishes, and distributes casual games through its website at bigfishgames.com. It offers downloadable games for PC/Mac; and online games, including puzzle, card, and word games. The company was founded in 2002 and is based in Seattle, Washington.

Using MySQL 5.1 for Data Warehousing/Business Intelligence Overview

(2008.11.24)
by Christopher Lavigne, Founding Partner at Breadboard BI, Inc.
Breadboard BI provides affordable business intelligence (BI), data integration, and general software application development consulting. We also offer a suite of customizable BI modules that form a modular and scalable enterprise solution. Our mission is to provide products and service that enable companies to reduce costs, improve sales, and satisfy regulatory requirements.

Using Partitioning for Data Warehousing at TriTUX.com

(2008.11.19)
by Fourat Zourai, Software Engineer for TriTUX.com
TriTUX is based in Tunis, Tunisia. Founded in 2006 as Systems Analysis and Weblication Development, TriTUX is providing high-quality professional services for achieving flexible, creative and scalable systems. TriTUX engineers is a team of jack-of-all-trades, possessing intimate knowledge in networking, eXtreme programming, GNU/Linux and scalable solutions.

MySQL Query Analyzer: Interview with Mark Matthews

(2008.11.18)
by Mark Matthews
MySQL Performance Tuning is always a popular topic for DBAs and Developers. Traditionally, database tuning has required manual effort and custom scripts. MySQL Query Analyzer aims to minimize the manual effort, with easy-to-use tools to help find-n-fix problem queries. In this interview, we talk with Mark Matthews, to get an architects view of the product.

Bound and Unbound DataGridView Control for MySQL 5.0/VB.NET 2008 Windows Applications

(2008.11.05)
by Ernest Bonat, Ph.D.
Understanding and programming MySQL data load into the DataGridView control is a must for Windows Application Developers today. Many times, in real production environment the end-users need to see a result set of data to make daily business decisions. The main question is about how many records they need to see when the control gets loaded. The answer of the question is defined by the client's business rules. At this point application performance is a critical issue for Application Developers. In this paper I'll show you how load MySQL data into the DataGridView control using VB.NET bound and unbound programming modes. A timer class named Stopwatch for VB.NET will be used to measure the execution time between theses two programming modes.

Using Partitioning to Manage Satellite Networks

(2008.10.17)
by Guy Adams, Chief Technical Officer at Parallel Ltd.
Our product historically used an Oracle backend, and after implementing simple date based range partitioning we got a 20-30 time performance increase in our queries. We had used MySQL in other more minor products we had developed, but we couldn’t move to it until partitioning was implemented. In Dec 05 we started to test MySQL partitioning, where partitioning syntax was supported but the optimizations were not in place. As soon as the optimizations were put in, we were able to run a side by side comparison against unpartitioned tables and Oracle partitions. Not only did we get in MySQL a 30+ times performance increase, but the MySQL version ran nearly twice as fast as the same Oracle configuration in a like for like test.

Advanced Bazaar for MySQL developers

(2008.09.16)
by Guilhem Bichot
The MySQL project switched from Bitkeeper to another revision control system, Bazaar, in June 2008. My colleague Daniel Fischer wrote an excellent article describing how to get MySQL's code by using Bazaar, and how to compile a MySQL server binary from this. Here I am going to build on this knowledge and take it further, to show you how to modify MySQL's code for your needs, and share your modifications.

FC Inter Milan Using MySQL 5.1 Partitioning and Event Scheduler

(2008.09.10)
by Corrado Pandiani
If you are a football (soccer) fan, then F.C. Internazionale may mean something to you. Or perhaps its more common name, Inter Milan sounds familiar? Next in our Use Case Competition articles, here's Corrado Pandiani's experience, about using MySQL to power inter.it, one of the most popular soccer sites in Europe. Not only that, but inter.it is using the latest MySQL 5.1 technology.

Using Partitioning and Event Scheduler to Prune Archive Tables

(2008.09.05)
by Gregory J. Haase
First in our series of Use Case reports on new MySQL 5.1 features, we have Greg Haase of Lotame describing his innovative use of partitioning. Usually, the creators of new applications are unaware of the various tweaking that users may submit their features to, in order to achieve surprising results. We in the community team are usually on the tweaking side, and we like to surprise developers with (positive) side effects of the existing features. This time, we were caught by surprise. Greg's usage of partitioning and events is really cool!

Getting started with Bazaar for MySQL code

(2008.06.24)
by Daniel Fischer
Since you're reading this, you probably know that Sun is switching to the Bazaar version control system for all development work on the MySQL server. Unlike the version control system that we've been using previously, Bazaar is an open source project and freely available to anyone. This means that it is now much easier to follow ongoing development, or even to participate in it! On the downside, just like our previous tool, Bazaar is not quite as straight-forward as traditional version control systems such as CVS or subversion. The aim of this article is to give an overview and a general idea of how to set up Bazaar, how to access the MySQL server source code repositories, and the basic commands for working with the source code.

"Telephony is just yet another Internet application." - MySQL talks with Juha Heinänen

(2008.05.23)
by MySQL Telecom Team (MySQL in Communications Blog)
During 2008 we are planning to run a series of interviews with interesting persons somehow related to the telecom field. In this first installment, we will have a chat with Juha Heinänen from Finland.

MySQL Workbench for Database Change Management

(2008.05.08)
by Robin Schumacher
Managing database change is an incredibly important discipline that very few database professionals overtly talk or worry about until they're in the thick of things with a particular database - moving it from development to production, making changes to a newly installed production database, or implementing an updated version of the database (new tables, modifications to existing objects, etc.) in a SaaS application. It's at that point where change management becomes very important because if you don't do things right the first time, you can make a royal mess of things and even (in a small number of cases) reach the point of no return where you've completely torched your database.

How the MySQL Enterprise Upgrade Advisor Helps DBAs Avoid Being Bitten by Known Bugs

(2008.04.01)
by Rob Young
In an earlier article I described how MySQL Enterprise takes the guesswork out of deciding which version of the MySQL server customers should be running by providing alerts around regularly scheduled Monthly Rapid Update and Quarterly Service Pack releases of the Enterprise Server. Being of an old school "if it ain't broke don't fix it" mindset, I understand the conservative approach most DBAs take when deciding if a new release of any software is relevant to their environment. In fact, given the monthly frequency of Enterprise maintenance releases and the work involved with upgrading, I completely understand how recipients can begin to ignore Update Alerts (unless of course a known fix is on the way). Based on feedback from customers, MySQL colleagues, and my own field experience, I recognize that while notifications around the regular Enterprise Server drops is a good thing, upgrading an existing MySQL implementation is no small task and that a major part of removing guesswork around new releases involves helping those receiving notifications better understand how they are affected.

Why you want to be good at data modeling

(2008.03.27)
by Robin Schumacher
To be really successful at working with databases, there are many different disciplines to become proficient in - things like disaster recovery, security management, data integration, and more. But there are less than a handful of things you want to be really good at; becoming super-skilled in them will help you enormously in your database career. And believe it or not, one of these key areas is data modeling and its kissing cousin, physical database design.

Reporting MySQL Internals with Information Schema plug-ins

(2008.02.21)
by Roland Bouman
Last week, I described how to use the MySQL plug-in API to write a minimal 'Hello world!' information schema plug-in. The main purpose of that plug-in is to illustrate the bare essentials of the MySQL information schema plug-in interface.

MySQL Information Schema Plugins: the best kept secret of MySQL 5.1

(2008.02.12)
by Roland Bouman
MySQL 5.1 offers an extremely useful feature called information_schema plugins. This feature allows dynamic runtime loading of a shared library into the MySQL server to implement a table in the information_schema database. The SQL standard (ISO/IEC 9075-11:2003) allows database implementations to extend the information_schema. MySQL 5.1 transfers the possibility to do this directly to privileged database users so they can extend the information_schema themselves, in any way they see fit.

Enforcing Foreign Keys Programmatically in MySQL

(2006.07.10)
by Philippe Campos
In this article we explore how to program foreign keys into a MySQL Server. This is important when your application requires referential integrity and the storage engine you’d like to use, as in the case of MyISAM or NDB (Cluster), does not support this functionality natively. We should note that InnoDB and the upcoming code-named “Falcon” storage engine, both support foreign keys.
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.