Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3488616
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T11:17:33+00:00 2026-05-18T11:17:33+00:00

Can you share your thoughts how would you implement data versioning in Cassandra. Suppose

  • 0

Can you share your thoughts how would you implement data versioning in Cassandra.

Suppose that I need to version records in an simple address book. (Address book records are stored as Rows in a ColumnFamily).
I expect that the history:

  • will be used infrequently
  • will be used all at once to present it in a “time machine” fashion
  • there won’t be more versions than few hundred to a single record.
  • history won’t expire.

I’m considering the following approach:

  • Convert the address book to Super Column Family and store multiple version of address book records in one Row keyed (by time stamp) as super columns.

  • Create new Super Column Family to store old records or changes to the records.
    Such structure would look as follows:

    {
    ‘address book row key’: {
    ‘time stamp1’: {
    ‘first name’: ‘new name’,
    ‘modified by’: ‘user id’,
    },

    'time stamp2': {
            'first name': 'new name',
            'modified by': 'user id',
        },
    },
    

    ‘another address book row key’: {
    ‘time stamp’: {
    ….

  • Store versions as serialized (JSON) object attached in new ColumnFamilly. Representing sets of version as rows and versions as columns. (modelled after Simple Document Versioning with CouchDB)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T11:17:33+00:00Added an answer on May 18, 2026 at 11:17 am

    If you can add the assumption that address books typically have fewer than 10,000 entries in them, then using one row per address book time line in a super column family would be a decent approach.

    A row would look like:

    {'address_book_18f3a8':
      {1290635938721704: {'entry1': 'entry1_stuff', 'entry2': 'entry2_stuff'}},
      {1290636018401680: {'entry1': 'entry1_stuff_v2', ...},
      ...
    }
    

    where the row key identifies the address book, each super column name is a time stamp, and the subcolumns represent the address book’s contents for that version.

    This would allow you to read the latest version of an address book with only one query and also write a new version with a single insert.

    The reason I suggest using this if address books are less than 10,000 elements is that super columns must be completely deserialized when you read even a single subcolumn. Overall, not that bad in this case, but it’s something to keep in mind.

    An alternative approach would be to use a single row per version of the address book, and use a separate CF with a time line row per address book like:

    {'address_book_18f3a8': {1290635938721704: some_uuid1, 1290636018401680: some_uuid2...}}
    

    Here, some_uuid1 and some_uuid2 correspond to the row key for those versions of the address book. The downside to this approach is that it requires two queries every time the address book is read. The upside is that it lets you efficiently read only select parts of an address book.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I know that I can share files using Shared Folders in Virtual PC, but
Can someone share a simple example of using the foreach keyword with custom objects?
Does that mean that I can't share a Form between delphi 2007 and 2009?
We'd like to make a few basic hook scripts that we can all share
If I make two iPhone applications, how can/should I share custom data (not contacts
I need to share SSO information between two different domains with a cookie, can
How can I share/link App.config or Web.config between multiple projects in a visual studio
Mono claims to be compatible with .NET. Have you tried it? Can you share
In C# you can use verbatim strings like this: @\\server\share\file.txt Is there something similar
When using copy-on-write semantics to share memory among processes, how can you test if

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.