Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

User-Defined Types (UDTs) in Cassandra

What are User-Defined Types (UDTs)?

User-Defined Types (UDTs) in Cassandra allow you to create complex data structures that can encapsulate multiple fields of varying data types. This feature enhances the flexibility of your schema design, allowing you to group related attributes together in a single column.

Benefits of Using UDTs

UDTs provide several advantages:

  • Structured Data: UDTs help in organizing data logically by allowing you to group related fields.
  • Reusability: You can reuse UDTs across multiple tables.
  • Improved Readability: UDTs make your queries easier to read and understand.

Defining a User-Defined Type

To define a UDT, you use the CREATE TYPE statement. Here is an example:

CREATE TYPE address (street text, city text, zip_code int);

In this example, we have created a UDT named address that contains three fields: street, city, and zip_code.

Using UDTs in a Table

Once a UDT is defined, you can use it as a column type in a table. Here’s how you can create a table that uses the address UDT:

CREATE TABLE users (id UUID PRIMARY KEY, name text, address frozen<address>);

In this case, the address column is defined as a UDT of type address. The frozen keyword is used to indicate that the UDT should be treated as a single value.

Inserting Data into UDT Columns

To insert data into a table with a UDT column, you specify the UDT field values in a specific format:

INSERT INTO users (id, name, address) VALUES (uuid(), 'John Doe', {'street': '123 Elm St', 'city': 'Springfield', 'zip_code': 12345});

This query inserts a user with an address defined by the UDT.

Querying UDTs

You can query UDT fields just like you would any other fields. For instance:

SELECT name, address.city FROM users;

This will return the names of users along with the city from their address UDT.

Updating UDTs

Updating a UDT field can be done by specifying the new values in the same format as when you insert data:

UPDATE users SET address = {'street': '456 Oak St', 'city': 'Othertown', 'zip_code': 67890} WHERE name = 'John Doe';

This updates the address of 'John Doe' to a new value.

Conclusion

User-Defined Types are a powerful feature in Cassandra that allow for more complex data modeling. By grouping related fields together, UDTs enhance the structure and readability of your data. They can be defined easily and used across various tables, making them a valuable tool for developers working with Cassandra.