Cassandra uses a SEDA (Staged Event-Driven Architecture) model where work is split into parallel stages. Each stage has input/output queues, an event handler, and a controller. This architecture provides well-conditioned system load and prevents overcommitting resources. In Cassandra, SEDA is used for operations like reads, writes, gossip, and anti-entropy. Counters use a structure containing replica IDs, values, and logical clocks to allow incremental updates across replicas. Secondary indexes allow queries by column values but are currently limited to equality comparisons due to using hash indexes instead of B-trees.