Rename with No Regrets: One Check to Make Before You Upgrade Your FaunaDB Driver
Tags: serverless, jamstack, database
Published: 2019-12-05 21:26:35

Author: John Miller, III
Date: September 12, 2019
[Originally posted on the Fauna blog.](https://fauna.com/blog/rename-with-no-regrets-one-check-to-make-before-you-upgrade-your-fauna-driver)

---

Continually evaluating ourselves and our products to produce the best overall experience for our community is at the forefront of our daily work here at Fauna. We built FaunaDB to make it easy for developers to design and build globally distributed applications, and we continually reflect on the feedback our users give us to make that experience even better. This constant self-assessment caused us to re-evaluate the use of two core terms in FaunaDB, “**class**” and “**instance**”.

Programmers and DBA’s who are familiar with NoSQL or SQL databases are accustomed to a specific database vernacular. When getting started with FaunaDB, experienced database programmers and DBAs were confused and hindered by the terms “**class**” and “**instance**” because our usage did not match up with the rest of the industry’s. In order to improve the experience for both new and seasoned database programmers, Fauna decided to change these two terms to align with established NoSQL database terminology. **Thus, in FaunaDB 2.7 we’ve renamed an “instance” to a “document” and a “class” to a “collection”.**  

The choice of replacement terms was difficult, as we view FaunaDB as a relational NoSQL database. Do we choose a term more suitable towards the SQL/relational spectrum such as ‘table’ and ‘row’, or more suitable towards NoSQL and use ‘collection’ and ‘document’? Ultimately, the NoSQL terms of ‘collection’ and ‘document’ were chosen because FaunaDB’s ability to work with flexible schema was viewed to be a more precise description of its functionality.

In this post, you will see how the rename will affect your everyday use of FaunaDB, as well as how to actually enable the naming changes by upgrading to 2.7.

#Details of the Rename#
The effect of the name change is far reaching and includes drivers, documentation, error messages, and API responses. While the change was extensive, we have worked to ensure 100% backward compatibility when an application connects using a version 2.6 or lower driver.

When using 2.7 drivers, the API functions CreateClass(), Class() and Classes() have been deprecated. While you can still currently use the deprecated functions in the 2.7 driver, they will be removed in a future version of Fauna. In addition, several of the API function’s response documents have changed. Any place in the returned response, which previously contained any form of the two words class or instance, have been replaced with their corresponding counterpart *collection* or *document*.

#Upgrading from 2.6 to 2.7 and above#
Thankfully, upgrading to use this new terminology is straightforward. To enable these naming changes, you only need to upgrade your driver to version 2.7 or greater.

Before upgrading your driver, check your application’s codebase to see if you parse the response document for the terms ‘class’ or ‘instance’. If you parse the response for these words, you will need to update your code appropriately--probably a simple search/replace will fix it.

A practical example of the API change is the [CreateClass() ](https://docs.fauna.com/fauna/current/api/fql/write/createclass)function’s response document shown below. While the function has been deprecated and replaced with [CreateDocument()](https://docs.fauna.com/fauna/current/api/fql/write/createcollection) it can still be used. The response shown below is from a version 2.6 driver, and maintains a 100% backward compatible format even though the application is connected to a 2.7 FaunaDB server.

<<< CreateClass Response from a 2.6 or earlier driver >>>

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/xsu4zne2gbfw9eu4np0m.png)

In comparison, the response document below is from the new FaunaDB 2.7 driver working with the new 2.7 FaunaDB server. The response below will be identical for either the CreateClass() command or the CreateCollection() command when working with a 2.7 or newer driver. *Notice that the **ref** field in the version 2.6 output above had the term **class** which has now been changed to **collection** below.* As previously noted, any form of the word class is transformed. The 2.6 output has the plural form **classes** which is transformed with the 2.7 driver to the plural form **collections**.

<<< CreateDocument or CreateClass Response from the 2.7 driver.  >>>

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/dn315863h65f4tdylda3.png)

While the change is relatively straightforward, it’s important to take time to do a quick check to make sure you aren’t surprised when you upgrade your driver.

#Conclusion#
At Fauna, one of our top priorities is ensuring our user community has a fantastic development experience. In this case, we realized it was important to evolve the product to use the familiar database terminology of ‘collection’ and ‘document’. However, we also knew it was key to minimize the impact to existing customers and applications. Conveniently, FaunaDB intelligently handles different driver versions, and for most users, a quick search and replace should be all you need to update your code.

While change is never easy, we know FaunaDB must evolve to be the best database server for our community. Do you have any ideas for how FaunaDB can evolve to make your life easier? Please reach out via email or join our Slack community and let us know!