FileMaker

Acquired Company

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.

History

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.

Checkpoints

Non-Blocking Consistent

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.

Concurrency Control

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.

Data Model

Relational

FileMaker is a relational database system. It follows the standard relational data model where a database consists of multiple connected tables. Data can be accessed through related tables.

Foreign Keys

Supported

FileMaker supports the foreign key constraint. By specifying a foreign key, the field can uniquely identify records in some related tables. FileMaker allows to have multiple foreign keys within one table and the values for foreign key don't have to be unique.

Indexes

Inverted Index (Full Text)

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.

Isolation Levels

Read Committed

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.

Query Execution

Tuple-at-a-Time Model

By default, FileMaker searches across all the fields to execute queries. Users can also perform vectorized searching in Browse mode by specifying one field.

Query Interface

Custom API SQL

Users can write scripts by using FileMaker commands to perform queries. FileMaker also provides ExecuteSQL, which enables the user to perform an SQL query with the databases.

Storage Architecture

Disk-oriented

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.

Stored Procedures

Not Supported

System Architecture

Shared-Everything

FileMaker is designed to run in a desktop environment.

FileMaker Logo
Website

http://www.filemaker.com/

Tech Docs

https://www.filemaker.com/support/product/documentation.html

Developer

Nashoba Systems

Country of Origin

US

Start Year

1985

Former Name

Nutshell

Acquired By

Apple

Project Type

Commercial

Supported languages

Java, JavaScript, PHP, PL/SQL, Python, SQL

Compatible With

MySQL, Oracle RDBMS, SQL Server

Operating Systems

Hosted, iOS, Linux, OS X, Windows

Licenses

Proprietary

Wikipedia

https://en.wikipedia.org/wiki/FileMaker