= Blog
:page-layout: blog-landing
:page-role: blog-landing

////
NOTES FOR CONTENT CREATORS
- To add a new blog post, copy and paste markup for one card below.  Copy from '//start' to the next '//end'
- Replace post tile, date, description and link to you post.
////

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Watch the Cassandra World Party
[discrete]
==== August 4, 2022
------
[openblock,card-content]
------
Don’t worry if you missed this year’s Cassandra World Party, we have the livestreams for every session and the individual talks for you to enjoy!

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Watch-the-Cassandra-World-Party.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1 Features: Pluggable Memtable Implementations
[discrete]
==== July 21, 2022
------
[openblock,card-content]
------
Apache Cassandra 4.1 supports alternative memtable implementations. Learn more about this feature and the proof of concept implementation included in the new release.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-Features-Pluggable-Memtable-Implementations.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Last Chance to Register: Schedule {amp} Moderators Announced
[discrete]
==== July 15, 2022
------
[openblock,card-content]
------
Register now for the upcoming Cassandra World Party and learn more about the speakers and moderators participating.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Last-Chance-to-Register-Schedule-Moderators-Announced.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #17
[discrete]
==== July 12, 2022
------
[openblock,card-content]
------
Cassandra 4.1 is getting closer, new Cassandra podcast and Cassandra World Party speakers and sponsors announced!

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-17-July-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1: Configuration Standardization
[discrete]
==== July 7, 2022
------
[openblock,card-content]
------
Introducting the New configuration framework for standardized property names and units, and provide more flexibility to end users.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-Configuration-Standardization.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1: Denylisting Partitions
[discrete]
==== June 30, 2022
------
[openblock,card-content]
------
Operators gain control of problematic partitions with Apache Cassandra's new feature in 4.1, the Partition Denylist.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-Denylisting-Partitions.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Talks & Sponsors Announced for Cassandra World Party 2022
[discrete]
==== June 29, 2022
------
[openblock,card-content]
------
Cassandra World Party 2022 draws closer, we announce some of the talks and sponsors for the event.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Talks-and-Sponsors-Announced-for-Cassandra-World-Party-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1 Features: Authentication Plugin Support for CQLSH
[discrete]
==== June 23, 2022
------
[openblock,card-content]
------
As the new version nears completion, we highlight how Apache Cassandra 4.1 will introduce support for authentication plugins for CQL shell (CQLSH).

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-Features-Authentication-Plugin-Support-for-CQLSH.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1: New SSTable Identifiers
[discrete]
==== June 16, 2022
------
[openblock,card-content]
------
Apache Cassandra 4.1 includes many features that make life easier for operators. One of them is a new globally unique identifier for SSTables.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-New-SSTable-Identifiers.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra World Party 2022
[discrete]
==== June 9, 2022
------
[openblock,card-content]
------
In anticipation of the release of Cassandra 4.1, we’re excited to announce the second-annual Cassandra World Party, a fun-packed event running across three time zones.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/World-Party-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #16
[discrete]
==== June 2, 2022
------
[openblock,card-content]
------
Cassandra 4.1-alpha available, new patch releases, and Cassandra World Party announced!

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-16-June-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1 Features: Client-side Password Hashing
[discrete]
==== May 26, 2022
------
[openblock,card-content]
------
To strengthen security and avoid the use of plain-text credentials altogether, Apache Cassandra has added the option to use client-side password hashes in 4.1.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-Features-Client-side-Password-Hashing.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== The Path to Green CI
[discrete]
==== May 19, 2022
------
[openblock,card-content]
------
As we approach the GA of Cassandra 4.1, we reflect on our development journey and show some statistics to demonstrate the level of testing that now goes into the project.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/The-Path-to-Green-CI.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.1 Features: Guardrails Framework
[discrete]
==== May 12, 2022
------
[openblock,card-content]
------
Cassandra 4.1 introduces Guardrails - a framework that helps enforce good practices to avoid poor cluster performance and availability because of certain user actions.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.1-Features-Guardrails-Framework.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #15
[discrete]
==== May 5, 2022
------
[openblock,card-content]
------
Code freeze in readiness for Cassandra 4.1 release, volunteers needed for Build Lead role, and CFPs open for Cassandra and Performance Engineering tracks at ApacheCon NA.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-15-May-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Liquibase is Ready to Support Cassandra 4.0 Users
[discrete]
==== April 28, 2022
------
[openblock,card-content]
------
Read the case study on Liquibase, which is both the name for an open source project for database change management and a company offering a paid-for version, and supports Apache Cassandra 3.11 and 4.0.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Liquibase-is-Ready-to-Support-Cassandra-4.0-Users.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Inside Cassandra: An Interview with Project Contributor, Aleksandr Sorokoumov
[discrete]
==== April 21, 2022
------
[openblock,card-content]
------
We continue our Inside Cassandra series with a Q&A with Aleksandr Sorokoumov who recently accepted the committer position in recognition of his contributions.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Inside-Cassandra-an-interview-with-Project-Contributor-Aleksandr-Sorokoumov.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== ApacheCon NA 2022 Call For Papers Open
[discrete]
==== April 7, 2022
------
[openblock,card-content]
------
Here is a great opportunity to contribute to the project. ApacheCon NA 2022 Call For Papers is open!

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/ApacheCon-NA-2022-Call-for-Papers-Open.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #14
[discrete]
==== April 7, 2022
------
[openblock,card-content]
------
Cassandra’s GitHub PRs get a clean-up, a new committer is announced, more volunteers are needed for Build Lead, and Python vs. in-jvm dtest is discussed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-14-April-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Kinetic Data chooses Apache Cassandra to deliver workflow automation solution
[discrete]
==== March 31, 2022
------
[openblock,card-content]
------
Read our latest user case study. When it came to building a new platform, Kinetic Data chose Apache Cassandra as the database for building its workflow automation solution.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Kinetic-Data-chooses-Apache-Cassandra-to-deliver-workflow-automation-solution.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Inside Cassandra: An Interview with Project Contributor, Lorina Poland
[discrete]
==== March 17, 2022
------
[openblock,card-content]
------
We continue our Inside Cassandra series by introducing the people behind the Apache Cassandra. Our first interviewee is Lorina Poland, who recently accepted the committer position in recognition of all her work on project documentation.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Inside-Cassandra-an-interview-with-Project-Contributor-Lorina-Poland.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Can Apache Cassandra take my PEM keys?
[discrete]
==== March 10, 2022
------
[openblock,card-content]
------
Maulin Vasavada demonstrates how to use PEM-based security credentials like your private key, corresponding certificate chain, and trusted CA certificates. These credentials will have built-in support in Apache Cassandra 4.1 which will also introduce a pluggable configuration for customizing the SSL context for TLS encryption

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Can-Apache-Cassandra-take-my-PEM-keys.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Join Apache Cassandra’s Google Summer of Code Program 2022
[discrete]
==== March 8, 2022
------
[openblock,card-content]
------
Apache Cassandra will be participating in the Google Summer of Code (GSoC) in 2022 again after a successful project in 2021, and the program itself this year has some changes we are excited to announce.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Join-Apache-Cassandras-GSoC-Program-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #13
[discrete]
==== March 3, 2022
------
[openblock,card-content]
------
A new patch is released for all supported versions to address a known vulnerability, we celebrate three new committers, and see SAI and other CEP features approved.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-13-March-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Java SE 11 LTS and Apache Cassandra
[discrete]
==== February 24, 2022
------
[openblock,card-content]
------
With the release of version 4.0.2, Cassandra's support
for Java 11 will no longer be experimental and offers a number of features including better performance because of better garbage collection.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-and-Java-SE-11-support.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Upgrade Advisory
[discrete]
==== February 18, 2022
------
[openblock,card-content]
------
If the operator has configured the cluster in a documented insecure way, it is possible for malicious users to execute remote code using scripted UDFs. Users of Apache Cassandra 3.0, 3.11, and 4.0 to upgrade or to reset enable_user_defined_functions_threads back to true.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Upgrade-Advisory2.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Behind the scenes of an Apache Cassandra Release
[discrete]
==== February 18, 2022
------
[openblock,card-content]
------
Formalizing how we balance the need to evolve and provide cutting-edge features with long-term stability. The simple rules we use to decide when to merge and why we’ll be supporting three GA releases going forward, but why we’ve decided to support four releases for the next cycle.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Behind-the-scenes-of-an-Apache-Cassandra-Release.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Tightening Security for Apache Cassandra: Part 3
[discrete]
==== February 14, 2022
------
[openblock,card-content]
------
In Part 3 of Maulin Vasavada’s mini-series on improving security, we detail how Cassandra 4.0 delivers ways to customize mTLS/TLS configuration while retaining the hot-reload functionality.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Tightening-Security-for-Apache-Cassandra-Part-3.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #12
[discrete]
==== February 10, 2022
------
[openblock,card-content]
------
A new Build Lead role is announced. Ideas are requested for Google Summer of Code, and the Future of UDF is defined. Cassandra’s CI process is formalized and a Trie Memtable Implementation is discussed.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-12-February-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Tightening Security for Apache Cassandra: Part 2
[discrete]
==== February 7, 2022
------
[openblock,card-content]
------
Part 2 of Maulin Vasavada’s mini-series covers how to secure data in transit using TLS/mTLS, configure TLS/mTLS properly, and the challenges before the release of Apache Cassandra 4.0.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Tightening-Security-for-Apache-Cassandra-Part-2.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Tightening Security for Apache Cassandra: Part 1
[discrete]
==== January 31, 2022
------
[openblock,card-content]
------
The growth in ecommerce has demanded a greater focus on data security, Maulin Vasavada begins a mini-series on how to customize SSL/TLS configurations to tighten security in Cassandra 4.0+.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Tightening-Security-for-Apache-Cassandra-Part-1.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #11
[discrete]
==== January 18, 2022
------
[openblock,card-content]
------
We deck the halls with Jira tickets running an Advent Calendar during December. Many CEPs have been approved and are in development while others, such as CEP-3 and CEP-10, have already been merged. We also welcome Sumanth Pasupuleti who becomes a committer and we start warming up for Google Summer of Code.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-11-January-2022.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Configurable Storage Ports and Why We Need Them
[discrete]
==== January 14, 2022
------
[openblock,card-content]
------
Cassandra’s network configuration is highly adaptable, communicating across a great variety of networks and devices, we explain how and why you might need to change your storage port configuration.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Configurable-Storage-Ports-and-Why-We-Need-Them.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Using Arithmetic Operators in Cassandra 4.0
[discrete]
==== December 21, 2021
------
[openblock,card-content]
------
With the release of Cassandra 4.0, CQL now supports arithmetic operators. Benjamin Lerer describes how to use operators, and how we’ve addressed challenges around return types and types inference.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Using-Arithmetic-Operators-in-Cassandra-4.0.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Harry, an Open Source Fuzz Testing and Verification Tool for Apache Cassandra
[discrete]
==== November 18, 2021
------
[openblock,card-content]
------
Introducing Harry, an Open Source fuzz testing and verification tool for Apache Cassandra that can combine properties of stress- and integration-testing tools. Harry can generate data for an arbitrary schema, execute data modification queries against the cluster, track the progress of operation execution, and make sure that responses to read queries are correct.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Harry-an-Open-Source-Fuzz-Testing-and-Verification-Tool-for-Apache-Cassandra.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Inside Cassandra: an interview with Marcel Birkner at Instana
[discrete]
==== November 17, 2021
------
[openblock,card-content]
------
We interview Marcel Birkner, Site Reliability Engineer at Instana, how they use Apache Cassandra to store and process the metric data at scale and benefit from Cassandra’s fault tolerance, and have learned the importance of dog-fooding.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Inside-Cassandra-an-interview-with-Marcel-Birkner-at-Instana.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== What the Future Holds for Apache Cassandra
[discrete]
==== October 26, 2021
------
[openblock,card-content]
------
The release of Apache Cassandra 4.0 has opened the floodgates to new feature proposals. Many feature ideas have been approved and are in development such as a cluster and code action simulator and support for general-purpose transaction support while others, such as Storage Attached Indexing, are being discussed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/What-the-Future-Holds-for-Apache-Cassandra.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #10
[discrete]
==== October 5, 2021
------
[openblock,card-content]
------
Apache Cassandra 4.0.1 is released, and Aleksei Zotov becomes a committer. Discussions are underway for some key, new feature proposals, including support for general-purpose transactions and Storage Attached Index (SAI). CEP-11, the pluggable memtable implementations proposal, has been approved, as has CEP-13 for a denylisting partitions feature.l-making.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-10-October-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Reaper: Anti-entropy Repair Made Easy 
[discrete]
==== September 28, 2021
------
[openblock,card-content]
------
Originally designed by Spotify, Reaper is an open source written in Java to schedule and orchestrate repairs of Apache Cassandra clusters. It helps make repairs as safe and reliable as possible, and with the recent release of Apache Cassandra 4.0 that also includes incremental repairs.

[openblock,card-btn card-btn--blog]
--------
[.btn.btn--alt]
xref:blog/Reaper-Anti-entropy-Repair-Made-Easy.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Join Cassandra at Apachecon 2021
[discrete]
==== September 20, 2021
------
[openblock,card-content]
------
Register to attend ApacheCon 2021 for a packed series of presentations on the new features in development for Apache Cassandra, along with best practices for CI & testing, and cutting-edge use cases. The BoF event at the end of the day includes a deep dive into Apache Cassandra 4.0 and cocktail-making.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Join-Cassandra-at-ApacheCon-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Cassandra on Kubernetes: A Beginner's Guide 
[discrete]
==== September 4, 2021
------
[openblock,card-content]
------
Managing infrastructure has been standardizing around Kubernetes. Learn how the Apache Cassandra community has been developing solutions to simplify deployment and management of data with Cassandra operators and open source distributions for Kubernetes.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Cassandra-on-Kubernetes-A-Beginners-Guide.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Upgrade Advisory 
[discrete]
==== August 18, 2021
------
[openblock,card-content]
------
Users of Apache Cassandra 3.023, 3.0.24, 3.11.9 and 3.11.10 should upgrade due to the potential for data corruption during schema changes.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Upgrade-Advisory.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #9 
[discrete]
==== August 18, 2021
------
[openblock,card-content]
------
Release of 4.0 GA, 3.0.25, and 3.0.11, upgrade advisory and Jon Meredith becomes committer.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-9-August-2021.adoc[Read More]
--------

------
----
//end card


//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.0 Overview 
[discrete]
==== August 18, 2021
------
[openblock,card-content]
------
Take a look at the full overview of the latest and greatest features of Apache Cassandra 4.0.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.0-Overview.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra 4.0 is Here 
[discrete]
==== July 27, 2021
------
[openblock,card-content]
------
On November 9th, 2015 the Apache Cassandra project released version 3.0 and, with it, a host of really big changes you would expect in a major version.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-4.0-is-Here.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #8 
[discrete]
==== June 28, 2021
------
[openblock,card-content]
------
4.0-rc2 released, say hello to our Google Summer of Code intern and new community intro to Cassandra videos.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-8-June-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Cassandra and Kubernetes: SIG Update #2 
[discrete]
==== June 9, 2021
------
[openblock,card-content]
------
The Cassandra Kubernetes SIG is excited to share that there has been coalescence around the Cass Operator project as the community-based operator.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Cassandra-and-Kubernetes-SIG-Update-2.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #7
[discrete]
==== May 31, 2021
------
[openblock,card-content]
------
Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-7-May-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Speakers Announce for April 28 Cassandra 4.0 World party
[discrete]
==== April 19,2021
------
[openblock,card-content]
------
The list of speakers for Apache Cassandra's upcoming 4.0 World Party.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Speakers-Announced-for-April-28-Cassandra-4.0-World-Party.adoc[Read More]
--------

------
----
//end card


//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra Changelog #6
[discrete]
==== April 12,2021
------
[openblock,card-content]
------
Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-6-April-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
=== Apache Cassandra World Party 2021
[discrete]
==== March 25, 2021
------
[openblock,card-content]
------
We are now one of the most important databases today and manage the biggest workloads in the world. Because of that, we want to gather the worldwide community to 

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/World-Party.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Join Apache Cassandra for Google Summer of Code 2021 
[discrete]
==== March 10, 2021
------
[openblock,card-content]
------
The ASF has been a GSoC mentor organization since the beginning. Apache Cassandra mentored a successful GSoC project in 2016 and we are participating again this year.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Join-Cassandra-GSoC-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Apache Cassandra Changelog #5 
[discrete]
==== March 08, 2021
------
[openblock,card-content]
------
Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-5-March-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Apache Cassandra Changelog #4 
[discrete]
==== February 11, 2021
------
[openblock,card-content]
------
Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-4-February-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Apache Cassandra Changelog #3
[discrete]
==== January 19, 2021
------
[openblock,card-content]
------
Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-3-January-2021.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Apache Cassandra Changelog #2
[discrete]
==== December 01, 2020
------
[openblock,card-content]
------
Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-2-December-2020.adoc[Read More]
--------

------
----
//end card


//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Apache Cassandra Changelog #1
[discrete]
==== October 28, 2020
------
[openblock,card-content]
------
Introducing the first Cassandra Changelog blog! Our monthly roundup of key activities and knowledge to keep the community informed.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Changelog-1-October-2020.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Apache Cassandra Usage Report 2020
[discrete]
==== September 17, 2020
------
[openblock,card-content]
------
Apache Cassandra is the open source NoSQL database for mission critical data. Today the community announced findings from a comprehensive global survey of 901 practitioners on Cassandra usage. It’s the first of what will become an annual survey that provides a baseline understanding of who, how, and why organizations use Cassandra.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Apache-Cassandra-Usage-Report-2020.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Improving Apache Cassandra’s Front Door and Backpressure
[discrete]
==== September 03, 2020
------
[openblock,card-content]
------
As part of CASSANDRA-15013, we have improved Cassandra’s ability to handle high throughput workloads, while having enough safeguards in place to protect itself from potentially going out of memory. In order to better explain the change we have made, let us understand at a high level, on how an incoming request is processed by Cassandra before the fix, followed by what we changed, and the new relevant configuration knobs available.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Improving-Apache-Cassandras-Front-Door-and-Backpressure.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Cassandra and Kubernetes: SIG Update and Survey
[discrete]
==== August 14, 2020
------
[openblock,card-content]
------
Five operators for Apache Cassandra have been created that have made it easier to run containerized Cassandra on Kubernetes. Recently the major contributors to these operators came together to discuss the creation of a community-based operator with the intent of making one that makes it easy to run C* on K8s. One of the project’s organizational goals is that the end result will eventually become part of the Apache Software Foundation or the Apache Cassandra project.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Cassandra-and-Kubernetes-SIG-Update-and-Survey.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Introducing Apache Cassandra 4.0 Beta: Battle Tested From Day One
[discrete]
==== July 20, 2020
------
[openblock,card-content]
------
This is the most stable Apache Cassandra in history; you should start using Apache Cassandra 4.0 Beta today in your test and QA environments, head to the downloads site to get your hands on it. The Cassandra community is on a mission to deliver a 4.0 GA release that is ready to be deployed to production. You can guarantee this holds true by running your application workloads against the Beta release and contributing to the community’s validation effort to get Cassandra 4.0 to GA.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Introducing-Apache-Cassandra-4-Beta-Battle-Tested-From-Day-One.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Even Higher Availability with 5x Faster Streaming in Cassandra 4.0
[discrete]
==== April 09, 2019
------
[openblock,card-content]
------
Streaming is a process where nodes of a cluster exchange data in the form of SSTables. Streaming can kick in during many situations such as bootstrap, repair, rebuild, range movement, cluster expansion, etc. In this post, we discuss the massive performance improvements made to the streaming process in Apache Cassandra 4.0.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Even-Higher-Availability-with-5x-Faster-Streaming-in-Cassandra-4.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Introducing Transient Replication
[discrete]
==== December 03, 2018
------
[openblock,card-content]
------
Transient Replication is a new experimental feature soon to be available in 4.0. When enabled, it allows for the creation of keyspaces where replication factor can be specified as a number of copies (full replicas) and temporary copies (transient replicas). Transient replicas retain the data they replicate only long enough for it to be propagated to full replicas, via incremental repair, at which point the data is deleted. Writing to transient replicas can be avoided almost entirely if monotonic reads are not required because it is possible to achieve a quorum of acknowledged writes without them.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Introducing-Transient-Replication.adoc[Read More]
--------

------
----
//end card


//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Audit Logging in Apache Cassandra 4.0
[discrete]
==== October 29, 2018
------
[openblock,card-content]
------
Database audit logging is an industry standard tool for enterprises to capture critical data change events including what data changed and who triggered the event. These captured records can then be reviewed later to ensure compliance with regulatory, security and operational policies.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Audit-Logging-in-Apache-Cassandra-4.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Finding Bugs in Cassandra's Internals with Property-based Testing
[discrete]
==== October 17, 2018
------
[openblock,card-content]
------
As of September 1st, the Apache Cassandra community has shifted the focus of Cassandra 4.0 development from new feature work to testing, validation, and hardening, with the goal of releasing a stable 4.0 that every Cassandra user, from small deployments to large corporations, can deploy with confidence. There are several projects and methodologies that the community is undertaking to this end. One of these is the adoption of property-based testing, which was previously introduced here. This post will take a look at a specific use of this approach and how it found a bug in a new feature meant to ensure data integrity between the client and Cassandra.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Finding-Bugs-in-Cassandra\'s-Internals-with-Property-based-Testing.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Testing Apache Cassandra 4.0
[discrete]
==== August 21, 2018
------
[openblock,card-content]
------
With the goal of ensuring reliability and stability in Apache Cassandra 4.0, the project’s committers have voted to freeze new features on September 1 to concentrate on testing and validation before cutting a stable beta. Towards that goal, the community is investing in methodologies that can be performed at scale to exercise edge cases in the largest Cassandra clusters. The result, we hope, is to make Apache Cassandra 4.0 the best-tested and most reliable major release right out of the gate.

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Testing-Apache-Cassandra-4.adoc[Read More]
--------

------
----
//end card

//start card
[openblock,card shadow relative test]
----
[openblock,card-header]
------
[discrete]
===  Hardware-bound Zero Copy Streaming in Apache Cassandra 4.0
[discrete]
==== August 07, 2018
------
[openblock,card-content]
------
Streaming in Apache Cassandra powers host replacement, range movements, and cluster expansions. Streaming plays a crucial role in the cluster and as such its performance is key to not only the speed of the operations its used in but the cluster’s health generally. In Apache Cassandra 4.0, we have introduced an improved streaming implementation that reduces GC pressure and increases throughput several folds and are now limited, in some cases, only by the disk / network IO (See: CASSANDRA-14556).

[openblock,card-btn card-btn--blog]
--------

[.btn.btn--alt]
xref:blog/Hardware-bound-Zero-Copy-Streaming-in-Apache-Cassandra-4.adoc[Read More]
--------

------
----
//end card
