FileMaker is a proprietary relational database application which can be used in a cross-platform environment. Users can create custom applications with a graphical user interface easily. FileMaker supports convenient data exchange with other web applications by cURL, JSON functions, and REST-based API. It can also connect to a number of SQL databases including MySQL, Oracle, and Microsoft SQL as data sources with operations like creation, edit, deletion.
FileMaker was originally developed as a DOS application called Nutshell distributed by Leading Edge in the early 1980s. The developers later evolved and published it for Apple Macintosh as FileMaker in April 1985. In the late 1980s, it was acquired by Claris, a wholly owned subsidiary of Apple and was first expanded to run under Windows there in 1992. Later, FileMaker was the only strong-selling product in Claris's lineup and Apple changed Claris's name to FileMaker, Inc., to concentrate on the database. FileMaker Go for iOS devices came out in 2010, supporting the creation, modification, and deletion. In 2016, FileMaker Cloud, which runs on AWS and includes a Linux server, was released and provides access to custom apps.
When running the backup schedule, FileMaker creates an entire copy of the databases and creates a hard link pointing to the most recent backup if no changes have been made to the databases since then to improve backup performance. FileMaker also supports Progressive backup which only saves the delta changes. The backup schedule is not blocking in FileMaker where users can continue to update data during backups. When the copy finishes, database hosting will be blocked to sync the backup with the current databases.
Optimistic Concurrency Control (OCC)
FileMaker used pessimistic concurrent control to avoid conflicts. A record will be locked when someone starts editing it and the lock will only be released until the user issues commit. Users that try to modify concurrently will receive a message about invalid modification. The most recent release introduced the FileMaker Data API which adopts the concept of transaction and uses optimistic concurrent control. All updates within one transaction will be submitted altogether. If any related record is empty or is in use, then nothing gets updated.
FileMaker uses index for searching and joining related tables. It creates lists of the words or values in a field and stores references to its record. There are two types of indexes in FileMaker. A word index is for text fields while a value index is for numbers, dates, time, relationships, etc. Words are mostly defined by spaces as well as some special characters and support partial text search. In addition to searching and joins, the index can also be used to generate value lists which allows FileMaker to build pop-up menu quickly.
FileMaker provides Read Committed isolation by having the pessimistic record locking. It is guaranteed that the lock is released only after commits and the version being read is the latest committed version. However, FileMaker has the client-side cache which may prevent the clients from reading the most recent version by looking at an outdated cache.
FileMaker stores its data on disk. Changes will be stored temporarily in memory, i.e. in the cache and will be flushed to hard disk regularly. The cache size and the interval between flushing can be specified by users. Users can force FileMaker to migrate updates to disk by running a given script.
N-ary Storage Model (Row/Record)
In FileMaker, records contain fields and form the tables.
https://www.filemaker.com/support/product/documentation.html
Nashoba Systems
1985
Nutshell
Apple
Java, JavaScript, PHP, PL/SQL, Python, SQL
MySQL, Oracle RDBMS, SQL Server
Hosted, iOS, Linux, OS X, Windows