Amazon S3 is a cloud-based object storage service from Amazon Web Services. It's key features are storage management and monitoring, access management and security, data querying, and data transfer.
Amazon S3 is a great service to safely backup your data where redundancy is guaranteed and the cost is fair. We use Amazon S3 for data that we backup and hope we never need to access but in the case of a catastrophic or even small slip of the finger with the delete command we know our data and our client's data is safely backed up by Amazon S3. Transferring data into Amazon S3 is free but transferring data out has an associated, albeit low, cost per GB. This needs to be kept in mind if you plan on transferring out a lot of data frequently. There may be other cost effective options although Amazon S3 prices are really low per GB. Transferring 150TB would cost approximately $50 per month.
Apache Cassandra is a NoSQL database and well suited where you need highly available, linearly scalable, tunable consistency and high performance across varying workloads. It has worked well for our use cases, and I shared my experiences to use it effectively at the last Cassandra summit! http://bit.ly/1Ok56TK It is a NoSQL database, finally you can tune it to be strongly consistent and successfully use it as such. However those are not usual patterns, as you negotiate on latency. It works well if you require that. If your use case needs strongly consistent environments with semantics of a relational database or if the use case needs a data warehouse, or if you need NoSQL with ACID transactions, Apache Cassandra may not be the optimum choice.
Fantastic developer API, including AWS command line and library utilities.
Strong integration with the AWS ecosystem, especially with regards to access permissions.
It's astoundingly stable- you can trust it'll stay online and available for anywhere in the world.
Its static website hosting feature is a hidden gem-- it provides perhaps the cheapest, most stable, most high-performing static web hosting available in PaaS.
Continuous availability: as a fully distributed database (no master nodes), we can update nodes with rolling restarts and accommodate minor outages without impacting our customer services.
Linear scalability: for every unit of compute that you add, you get an equivalent unit of capacity. The same application can scale from a single developer's laptop to a web-scale service with billions of rows in a table.
Amazing performance: if you design your data model correctly, bearing in mind the queries you need to answer, you can get answers in milliseconds.
Time-series data: Cassandra excels at recording, processing, and retrieving time-series data. It's a simple matter to version everything and simply record what happens, rather than going back and editing things. Then, you can compute things from the recorded history.
Web console can be very confusing and challenging to use, especially for new users
Bucket policies are very flexible, but the composability of the security rules can be very confusing to get right, often leading to security rules in use on buckets other than what you believe they are
Cassandra runs on the JVM and therefor may require a lot of GC tuning for read/write intensive applications.
Requires manual periodic maintenance - for example it is recommended to run a cleanup on a regular basis.
There are a lot of knobs and buttons to configure the system. For many cases the default configuration will be sufficient, but if its not - you will need significant ramp up on the inner workings of Cassandra in order to effectively tune it.
I would recommend Cassandra DB to those who know their use case very well, as well as know how they are going to store and retrieve data. If you need a guarantee in data storage and retrieval, and a DB that can be linearly grown by adding nodes across availability zones and regions, then this is the database you should choose.
It is tricky to get it all set up correctly with policies and getting the IAM settings right. There is also a lot of lifecycle config you can do in terms of moving data to cold/glacier storage. It is also not to be confused with being a OneDrive or SharePoint replacement, they each have their own place in our environment, and S3 is used more by the IT team and accessed by our PHP applications. It is not necessarily used by an average everyday user for storing their pictures or documents, etc.
AWS has always been quick to resolve any support ticket raised. S3 is no exception. We have only ever used it once to get a clarification regarding the costs involved when data is transferred between S3 and other AWS services or the public internet. We got a response from AWS support team within a day.
Overall, we found that Amazon S3 provided a lot of backend features Google Cloud Storage (GCS) simply couldn't compare to. GCS was way more expensive and really did not live up to it. In terms of setup, Google Cloud Storage may have Amazon S3 beat, however, as it is more of a pseudo advanced version of Google Drive, that was not a hard feat for it to achieve. Overall, evaluating GCS, in comparison to S3, was an utter disappointment.
We evaluated MongoDB also, but don't like the single point failure possibility. The HBase coupled us too tightly to the Hadoop world while we prefer more technical flexibility. Also HBase is designed for "cold"/old historical data lake use cases and is not typically used for web and mobile applications due to its performance concern. Cassandra, by contrast, offers the availability and performance necessary for developing highly available applications. Furthermore, the Hadoop technology stack is typically deployed in a single location, while in the big international enterprise context, we demand the feasibility for deployment across countries and continents, hence finally we are favor of Cassandra
It practically eliminated some real heavy storage servers from our premises and reduced maintenance cost.
The excellent durability and reliability make sure the return of money you invested in.
If the objects which are not active or stale, one needs to remove them. Those objects keep adding cost to each billing cycle. If you are handling a really big infrastructure, sometimes this creates quite a huge bill for preserving un-necessary objects/documents.
I have no experience with this but from the blogs and news what I believe is that in businesses where there is high demand for scalability, Cassandra is a good choice to go for.
Since it works on CQL, it is quite familiar with SQL in understanding therefore it does not prevent a new employee to start in learning and having the Cassandra experience at an industrial level.