Aquiles
# Aquiles

Aquiles is a client for .NET (3.5 or above) to access Apache Cassandra (0.6 or above).

## Features

Aquiles adds following functionality:

* .NET-friendly interface to Cassandra operations.
* Byte Enconder Helpers avoid need to create and manage self-created types, like Long, UTF8, ASCII, GUID, UUID etc.
* Choose what EndpointManager to use
* Choose what Transport to use
* Configure what ConnectionPool necessary to use and its internal parameters.
* Connection pool having warm-up and size-control capabilities
* Endpoint Manager: manages all the entry-point nodes to a cluster and will automatically distribute the connections against all the cluster endpoints defined besides checking for healthiness of the nodes (defensive node health check strategy).
* Handling more than one cluster in application
* Managed (add, modify, remove) Keyspaces and ColumnFamily objects (since version 0.7.X)
* Monitors features out-of-the-box and all connections to Cassandra by the Performance Monitor (native with Windows) by implementing PerformanceCounterHelper fwk.
* Prior Keyspace and ColumnFamily existence validation against a cluster information (taken out since version 0.7.X)
* Simple and user-friendly configuration section to configure all clusters
* Validation of command parameters:
   * Input Parameter Completeness: It is no more necessary to go against a cluster to detect that parameters are missing.

## Supported commands

Aquiles supports all Cassandra comments and some system comments.

### Most common commands

Here is the list of the most used commands:

| Command | Command | Command |
| - | - | - |
| BatchMutateCommand | DeleteCommand | DescribeKeySpaceCommand |
| DescribeSnitchCommand | DescribeSplitsCommand | GetCommand |
| GetCountCommand | GetIndexedSlicesCommand | GetKeyRangeSliceCommand |
| GetSliceCommand | InsertCommand | LoginCommand |
| MultiGetCountCommand | MultiGetSliceCommand | RetrieveClusterNameCommand |
| RetrieveClusterVersionCommand | RetrieveKeySpaceDistributionCommand | RetrieveKeySpacesCommand |
| RetrievePartitionerCommand | TruncateColumnFamilyCommand | |

### System commands

| Command | Command | Command |
| - | - | - |
| AddColumnFamilyCommand | AddKeyspaceCommand | DropColumnFamilyCommand |
| DropKeyspaceCommand | SchemaAgreementCommand | UpdateColumnFamilyCommand |
| UpdateKeyspaceCommand | | |
