Apache Cassandra

Fra Wikipedia, den frie encyklopedi
Hopp til navigering Hopp til søk
Apache Cassandra
[[Fil:Cassandra logo|75x75px|Apache Cassandra]]
SkaperAvinash Lakshman, Prashant Malik
UtviklerApache Software Foundation
Utgitt2008
Nyeste versjon3.10 / 3. februar 2017; 2 år siden (2017-02-03)
TypeDatabase
LisensApache License 2.0
Nettstedcassandra.apache.org
Helenos er et grafisk grensesnitt for Cassandra

Apache Cassandra er et fritt og åpet kildekode distribuert NoSQL database-system designet for å håndtere store mengder data på tvers av mange standard servere, som sørger for høy tilgjengelighet med ingen «single point of failure». Cassandra tilbyr robust støtte for klustre som strekker seg over flere datasentre,[1] med asynkron replikering uten en master som tillater lav ventetid på alle operasjoner for alle klienter.

Cassandra vektlegger også ytelse. I 2012 konkluderte University of Toronto-forskere som studerte NoSQL-systemer med at «In terms of scalability, there is a clear winner throughout our experiments. Cassandra achieves the highest throughput for the maximum number of nodes in all experiments», selv om dette «this comes at the price of high write and read latencies.»[2]

Historie[rediger | rediger kilde]

Avinash Lakshman (en av forfatterne av Amazons Dynamo) og Prashant Malik utviklet Cassandra hos Facebook for å øke ytelsen til Facebooks innboks-søk. Facebook slapp Cassandra som et open-source-prosjektGoogle code i juli 2008.[3] I mars 2009 ble det et Apache Incubator-prosjekt.[4] 17. february 2010 ble prosjektet forfremmet til et «top-level»-prosjekt.[5]

Facebook-utviklerne oppkalte deres database etter den mytologiske Trojan-profeten Cassandra.[6]

Utgivelser inkluderer

  • 0.6, sluppet 12. april 2010, added support for integrated caching, and Apache Hadoop MapReduce[7]
  • 0.7, sluppet 8. januar 2011, added secondary indexes and online schema changes[8]
  • 0.8, sluppet 2. juni 2011, added the Cassandra Query Language (CQL), self-tuning memtables, and support for zero-downtime upgrades[9]
  • 1.0, sluppet 17. oktober 2011, added integrated compression, leveled compaction, and improved read-performance[10]
  • 1.1, sluppet 23. april 2012, added self-tuning caches, row-level isolation, and support for mixed ssd/spinning disk deployments[11]
  • 1.2, sluppet 2. januar 2013, added clustering across virtual nodes, inter-node communication, atomic batches, and request tracing[12]
  • 2.0, sluppet 4. september 2013, added lightweight transactions (based on the Paxos consensus protocol), triggers, improved compactions
  • 2.0.4, sluppet 30. desember 2013, added allowing specifying datacenters to participate in a repair, client encryption support to sstableloader, allow removing snapshots of no-longer-existing CFs[13]
  • 2.1.0 sluppet 10. september 2014 [14]
  • 2.1.6 sluppet 8. juni 2015
  • 2.1.7 sluppet 22. juni 2015
  • 2.2.0 sluppet 20. juli 2015
  • 2.2.2 sluppet 5. oktober 2015
  • 3.0 sluppet og senere slipp hver måned ved hjelp av en tick-tock-lik utgivelsesmodell, med like tall i utgivelser som både har nye egenskaper og feilrettinger, og odde tall med kun feilfiksinger.[15]
Versjon Opprinnelig utgivelsesdato Siste versjon Utgivelsesdato Status[16]
Old version, no longer supported: 0.6 2010-04-12 0.6.13 2011-04-18 Ikke lenger støttet
Old version, no longer supported: 0.7 2011-01-10 0.7.10 2011-10-31 Ikke lenger støttet
Old version, no longer supported: 0.8 2011-06-03 0.8.10 2012-02-13 Ikke lenger støttet
Old version, no longer supported: 1.0 2011-10-18 1.0.12 2012-10-04 Ikke lenger støttet
Old version, no longer supported: 1.1 2012-04-24 1.1.12 2013-05-27 Ikke lenger støttet
Old version, no longer supported: 1.2 2013-01-02 1.2.19 2014-09-18 Ikke lenger støttet
Old version, no longer supported: 2.0 2013-09-03 2.0.17 2015-09-21 Ikke lenger støttet
Older version, yet still supported: 2.1 2014-09-16 2.1.17 2017-02-21 Fortsatt støttet
Older version, yet still supported: 2.2 2015-07-20 2.2.9 2017-02-21 Fortsatt støttet
Older version, yet still supported: 3.0 2015-11-09 3.0.13 2017-04-14 Fortsatt støttet
Current stable version: 3.10 2017-02-03 3.10 2017-02-03 Siste utgivelse
Legend:
Old version
Older version, still supported
Latest version
Latest preview version
Future release

Hovedegenskaper[rediger | rediger kilde]

Desentralisert
Hver node i klusteret har den samme rollen. Det er ikke noe «single point of failure». Data er distribuert på tvers av klusteret, slik at hver node inneholder forskjellige data, men det er ikke noe master da hver node kan svare på hvilket som helst kall.
Støtter replikering og replikering på tvers av flere datasentre
Replikeringsstrategier er konfigurerbare.[17] Cassandra er designet som et distribuert system, for utrulling på mange noder på tvers av flere datasentre. Nøkkelegenskaper til Cassandras distribuerte arkitektur er tilpasset multi-datasenter-utrullinger, for redundans, for «failover» og katastrofeopprettelse.
Skalerbarhet
Lese- og skriveoperasjoner øker lineært når nye maskiner legges til, uten nedetid eller avbrudd i applikasjoner som benytter databasen.
Feiltolerant
Data kopieres automatisk til flere noder for feiltoleranse. Replikasjon på tvers av flere datasentre støttes. Noder som feiler kan erstattes uten nedetid.
Tunbar konsistens
Skrive- og leseoperasjoner gir et innstillbart konsistensnivå, helt fra «"writes never fail" til "block for all replicas to be readable" med quorum level i midten.[18]
MapReduce-støtte
Cassandra har Hadoop-integrasjon med MapReduce-støtte. Det er også støtte for Apache Pig og Apache Hive.[19]
Spørrespråk
Cassandra introduserte Cassandra Query Language (CQL). CQL er et enkelt grensesnitt for tilgang til Cassandra, som et alternativ til det tradisjonelle Structured Query Language (SQL). CQL legger til et abstraksjonslag som skjuler implementeringsdetaljer for denne strukturen og sørger for oversettelse til samlinger og andre vanlige kodinger.[20] Språkdrivere er tilgjengelige for Java (JDBC), Python (DBAPI2), Node.JS (Helenus), Go (gocql) og C ++.[21]

Nedenfor et eksempel på oppretting av nøkkelrommet («key space»), inkludert en kolonnefamilie i CQL 3.0:[22]

CREATE KEYSPACE MyKeySpace
  WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

USE MyKeySpace;

CREATE COLUMNFAMILY MyColumns (id text, Last text, First text, PRIMARY KEY(id));

INSERT INTO MyColumns (id, Last, First) VALUES ('1', 'Doe', 'John');

SELECT * FROM MyColumns;

Which gives:

 id | first | last
----+-------+------
  1 |  John |  Doe

(1 rows)

Kjente problemer[rediger | rediger kilde]

Cassandra er ikke konsistent på radenivå,[23] noe som betyr at innsettinger og oppdateringer i tabellen som påvirker samme rad som behandles omtrent samme tid, kan påvirke kolonnene som ikke-nøkkelkolonner på inkonsekvente måter. En oppdatering kan påvirke en kolonne mens en annen påvirker den andre, noe som resulterer i sett med verdier innenfor raden som aldri ble angitt.

Datamodell[rediger | rediger kilde]

Cassandra er essensielt en hybrid mellom en «key-value» og en kolonne-orientert- (eller tabular)-databasesystem. Datamodellen er en partisjonert «row store» med tunbar konsistens.[18] Rader er organisert i tabeller.

Clustering[rediger | rediger kilde]

Når et cluster for Apache Cassandra designes, en viktig poeng er å velge riktig partisjonering. To partisjoneringer eksisterer:[24]

  1. OrderPreservingPartitioner (OPP): Denne partitioner distribuerer key-value-par på en naturlig måte så like nøkler ikke er så lang fra hverandre. Fordelen med dette er at færre noder må aksesseres. Ulempen er at det er en ujevn distribusjon av key-value par.
  2. RandomPartitioner (RP): Denne partitionereren distribuerer tilfeldig key-value-par i nettverket, noe som resulterer i god lastbalansering. Sammenlignet med OPP, flere noder må aksesseres for å få et gitt antall nøkler.

Styring og overvåking[rediger | rediger kilde]

Cassandra er et Java-basert system som kan styres og monitoreres via Java Management Extensions (JMX).

Prominente brukere[rediger | rediger kilde]

Cassandra er den mest populære «wide column store»,[25] og i september 2014 gikk forbi Sybase til å bli den 9 mest populære databasen, rett bak Microsoft Access og SQLite.[26]

  • @WalmartLabs[27] (previously Kosmix) uses Cassandra with SSD
  • Amadeus IT Group uses Cassandra for some of their back-end systems.
  • Apple uses 100,000 Cassandra nodes, as revealed at Cassandra Summit San Francisco 2015,[28] although it has not elaborated for which products, services or features.
  • AppScale uses Cassandra as a back-end for Google App Engine applications[29]
  • BlackRock uses Cassandra in their Aladdin investment management platform[30][31]
  • CERN used Cassandra-based prototype for its ATLAS experiment to archive the online DAQ system's monitoring information[32]
  • Cisco's WebEx uses Cassandra to store user feed and activity in near real time.[33]
  • Cloudkick uses Cassandra to store the server metrics of their users.[34]
  • Constant Contact uses Cassandra in their email and social media marketing applications.[35] Over 200 nodes are deployed.
  • Digg, a large social news website, announced on Sep 9th, 2009 that it is rolling out its use of Cassandra[36] and confirmed this on March 8, 2010.[37] TechCrunch has since linked Cassandra to Digg v4 reliability criticisms and recent company struggles.[38] Lead engineers at Digg later rebuked these criticisms as red herring and blamed a lack of load testing.[39]
  • Discord uses Cassandra to store over 120 million messages per day.[40]
  • Facebook used Cassandra to power Inbox Search, with over 200 nodes deployed.[41] This was abandoned in late 2010 when they built Facebook Messaging platform on HBase as they "found Cassandra's eventual consistency model to be a difficult pattern".[42] Facebook moved off its pre-Apache Cassandra deployment in late 2010 when they replaced Inbox Search with the Facebook Messaging platform.[42] In 2012, Facebook began using Apache Cassandra in its Instagram unit.[43]
  • Formspring uses Cassandra to count responses, as well as store Social Graph data (followers, following, blockers, blocking) for 26 Million accounts with 10 million responses a day[44]
  • IBM has done research in building a scalable email system based on Cassandra.[45]
  • Mahalo.com uses Cassandra to record user activity logs and topics for their Q&A website[46][47]
  • Netflix uses Cassandra as their back-end database for their streaming services[48][49]
  • Nutanix appliances use Cassandra to store metadata and stats.[50]
  • Ooyala built a scalable, flexible, real-time analytics engine using Cassandra[51]
  • Openwave uses Cassandra as a distributed database and as a distributed storage mechanism for their next generation messaging platform[52]
  • OpenX is running over 130 nodes on Cassandra for their OpenX Enterprise product to store and replicate advertisements and targeting data for ad delivery[53]
  • Plaxo has "reviewed 3 billion contacts in [their] database, compared them with publicly available data sources, and identified approximately 600 million unique people with contact info."[54]
  • Plexistor for Apache Cassandra delivers high capacity storage at near-memory speed, reducing the need for expensive memory and dedicated servers. Plexistor can be used in Amazon AWS as well as on premise, running on Linux OS or on Docker containers.[55]
  • PostRank used Cassandra as their backend database[56]
  • Rackspace uses Cassandra internally.[57]
  • Reddit switched to Cassandra from memcacheDB on March 12, 2010[58] and experienced some problems in May due to insufficient nodes in their cluster.[59]
  • RockYou uses Cassandra to record every single click for 50 million Monthly Active Users in real-time for their online games[60]
  • SoundCloud uses Cassandra to store the dashboard of their users[61]
  • Talentica Software uses Cassandra as a back-end for Analytics Application with Cassandra cluster of 30 nodes and inserting around 200GB data on a daily basis.[62]
  • Tibbo Systems uses Cassandra as configuration and event storage for AggreGate Platform.
  • Twitter announced it was planning to move entirely from MySQL to Cassandra,[63][64] though soon after retracted this, keeping Tweets in MySQL while using Cassandra for analytics.[65]
  • Urban Airship uses Cassandra with the mobile service hosting for over 160 million application installs across 80 million unique devices[66]
  • Wikimedia uses Cassandra as backend storage for its public-facing REST Content API.[67]

Akademisk bakgrunn[rediger | rediger kilde]

Kommersielle selskap[rediger | rediger kilde]

  • DataStax
  • Impetus Technologies
  • Cubet Techno Labs
  • Instaclustr

Alternativer[rediger | rediger kilde]

Referanser[rediger | rediger kilde]

  1. ^ Casares, Joaquin (5. november 2012). «Multi-datacenter Replication in Cassandra». DataStax. Besøkt 25. juli 2013. «Cassandra’s innate datacenter concepts are important as they allow multiple workloads to be run across multiple datacenters…» 
  2. ^ Rabl, Tilmann; Sadoghi, Mohammad; Jacobsen, Hans-Arno; Villamor, Sergio Gomez-; Mulero -, Victor Muntes; Mankovskii, Serge (27. august 2012). «Solving Big Data Challenges for Enterprise Application Performance Management» (PDF). VLDB. Besøkt 25. juli 2013. «In terms of scalability, there is a clear winner throughout our experiments. Cassandra achieves the highest throughput for the maximum number of nodes in all experiments... this comes at the price of high write and read latencies» 
  3. ^ Hamilton, James (12. juli 2008). «Facebook Releases Cassandra as Open Source». Besøkt 4. juni 2009. 
  4. ^ «Is this the new hotness now?». Mail-archive.com. 2. mars 2009. Arkivert fra originalen 25. april 2010. Besøkt 29. mars 2010. 
  5. ^ «Cassandra is an Apache top level project». Mail-archive.com. 18. februar 2010. Arkivert fra originalen 28. mars 2010. Besøkt 29. mars 2010. 
  6. ^ «The meaning behind the name of Apache Cassandra». Besøkt 19. juli 2016. «Apache Cassandra is named after the Greek mythological prophet Cassandra. [...] Because of her beauty Apollo granted her the ability of prophecy. [...] When Cassandra of Troy refused Apollo, he put a curse on her so that all of her and her descendants' predictions would not be believed. [...] Cassandra is the cursed Oracle[.]» 
  7. ^ «The Apache Software Foundation Announces Apache Cassandra Release 0.6 : The Apache Software Foundation Blog». Besøkt 5. januar 2016. 
  8. ^ «The Apache Software Foundation Announces Apache Cassandra 0.7 : The Apache Software Foundation Blog». Besøkt 5. januar 2016. 
  9. ^ Eric Evans. «[Cassandra-user] [RELEASE] 0.8.0». Besøkt 5. januar 2016. 
  10. ^ «Cassandra 1.0.0. Is Ready for the Enterprise». InfoQ. Besøkt 5. januar 2016. 
  11. ^ «The Apache Software Foundation Announces Apache Cassandra™ v1.1 : The Apache Software Foundation Blog». Besøkt 5. januar 2016. 
  12. ^ «The Apache Software Foundation Announces Apache Cassandra™ v1.2 : The Apache Software Foundation Blog». apache.org. Besøkt 11. desember 2014. 
  13. ^ Eric Evans. «[Cassandra-User] [RELEASE] Apache Cassandra 2.0.4». qnalist.com. Arkivert fra originalen 13. desember 2014. Besøkt 11. desember 2014. 
  14. ^ Sylvain Lebresne (10. september 2014). «[VOTE SUCCESS] Release Apache Cassandra 2.1.0». mail-archive.com. Besøkt 11. desember 2014. 
  15. ^ «Cassandra 2.2, 3.0, and beyond». 16. juni 2015. Besøkt 22. april 2016. 
  16. ^ «Cassandra Server Releases». cassandra.apache.org. Besøkt 15. desember 2015. 
  17. ^ «Deploying Cassandra across Multiple Data Centers». DataStax. Besøkt 11. desember 2014. 
  18. ^ a b DataStax (15. januar 2013). «About data consistency». Besøkt 25. juli 2013. 
  19. ^ "Hadoop Support" artikkel på Cassandras wiki
  20. ^ Intellipaat. «Cassandra Tutorial». Intellipaat. Besøkt 5. januar 2016. 
  21. ^ «DataStax C/C++ Driver for Apache Cassandra». DataStax. Besøkt 15. desember 2014. 
  22. ^ «CQL». Arkivert fra originalen 13. januar 2016. Besøkt 5. januar 2016. 
  23. ^ «WAT - Cassandra: Row level consistency #$@&%*! - datanerds.io». datanerds.io. Besøkt 28. november 2016. 
  24. ^ Williams, Dominic. «Cassandra: RandomPartitioner vs OrderPreservingPartitioner». http://wordpress.com/: WordPress.com. Besøkt 23. mars 2011. «When building a Cassandra cluster, the “key” question (sorry, that’s weak) is whether to use the RandomPartitioner (RP), or the OrdengPartitioner (OPP). These control how your data is distributed over your nodes. Once you have chosen your partitioner, you cannot change without wiping your data, so think carefully! The problem with OPP: If the distribution of keys used by individual column families is different, their sets of keys will not fall evenly across the ranges assigned to nodes. Thus nodes will end up storing preponderances of keys (and the associated data) corresponding to one column family or another. If as is likely column families store differing quantities of data with their keys, or store data accessed according to differing usage patterns, then some nodes will end up with disproportionately more data than others, or serving more “hot” data than others.» 
  25. ^ DB-Engines. «DB-Engines Ranking of Wide Column Stores». 
  26. ^ DB-Engines. «DB-Engines Ranking». 
  27. ^ «@WalmartLabs». walmartlabs.com. Besøkt 11. desember 2014. 
  28. ^ Luca Martinetti: Apple runs more than 100k [production] Cassandra nodes.Twitter
  29. ^ «Datastores on Appscale». Arkivert fra originalen 7. september 2013. 
  30. ^ «Top Cassandra Summit Sessions For Advanced Cassandra Users». 
  31. ^ «Multi-Tenancy in Cassandra at BlackRock». 
  32. ^ «A Persistent Back-End for the ATLAS Online Information Service (P-BEAST)». 
  33. ^ «Re: Cassandra users survey». Mail-archive.com. 21. november 2009. Arkivert fra originalen 17. april 2010. Besøkt 29. mars 2010. 
  34. ^ 4 Months with Cassandra, a love story |Cloudkick, manage servers better Arkivert 11. mai 2011 hos Wayback Machine.
  35. ^ Finley, Klint (18. februar 2011). «This Week in Consolidation: HP Buys Vertica, Constant Contact Buys Bantam Live and More». Read Write Enterprise. 
  36. ^ Eure, Ian. «Looking to the future with Cassandra». 
  37. ^ Quinn, John. «Saying Yes to NoSQL; Going Steady with Cassandra». Arkivert fra originalen 7. mars 2012. 
  38. ^ Schonfeld, Erick. «As Digg Struggles, VP Of Engineering Is Shown The Door». 
  39. ^ «Is Cassandra to Blame for Digg v4's Failures?». 
  40. ^ Vishnevskiy, Stanislav (14. januar 2017). «How Discord Stores Billions of Messages». 
  41. ^ «Niet compatibele browser». Facebook. Besøkt 29. mars 2010. 
  42. ^ a b Muthukkaruppan, Kannan. «The Underlying Technology of Messages». 
  43. ^ Rick Branson (26. juni 2013). «Cassandra at Instagram». DataStax. Besøkt 25. juli 2013. 
  44. ^ Cozzi, Martin (31. august 2011). «Cassandra at Formspring». 
  45. ^ «BlueRunner: Building an Email Service in the Cloud» (PDF). ieee.org. 20. juli 2009. Besøkt 29. mars 2010. 
  46. ^ «Mahalo.com powered by Apache Cassandra™» (PDF). Santa Clara, CA, USA: DataStax. 10. april 2012. Besøkt 13. juni 2014. 
  47. ^ Watch Cassandra at Mahalo.com |DataStax Episodes |Blip Arkivert 10. desember 2011 hos Wayback Machine.
  48. ^ Cockcroft, Adrian (11. juli 2011). «Migrating Netflix from Datacenter Oracle to Global Cassandra». Besøkt 13. juni 2014. 
  49. ^ Izrailevsky, Yury (28. januar 2011). «NoSQL at Netflix». 
  50. ^ «Nutanix Bible». 
  51. ^ Ooyala (18. mai 2010). «Designing a Scalable Database for Online Video Analytics» (PDF). Mountain View CA, USA. Besøkt 14. juni 2014. 
  52. ^ Mainstay LLC (11. november 2013). «DataStax Case Study of Openwave Messaging» (PDF). Santa Clara, CA, USA: DataStax. Besøkt 15. juni 2014. 
  53. ^ Ad Serving Technology - Advanced Optimization, Forecasting, & Targeting |OpenX Arkivert 7. oktober 2011 hos Wayback Machine.
  54. ^ Smalley, Preston (20. mars 2011). «An important milestone - and it's only the beginning!». Arkivert fra originalen 26. september 2011. 
  55. ^ «Plexistor for Apache Cassandra». 
  56. ^ Grigorik, Ilya (29. mars 2011). «Webpulp TV: Scaling PostRank with Ilya Grigorik». Arkivert fra originalen 23. september 2011. 
  57. ^ «Hadoop and Cassandra (at Rackspace)». Stu Hood. 23. april 2010. Besøkt 1. september 2011. 
  58. ^ david [ketralnis] (12. mars 2010). «what's new on reddit: She who entangles men». blog.reddit. Arkivert fra originalen 25. mars 2010. Besøkt 29. mars 2010. 
  59. ^ Posted by the reddit admins at (11. mai 2010). «blog.reddit -- what's new on reddit: reddit's May 2010 "State of the Servers" report». blog.reddit. Arkivert fra originalen 14. mai 2010. Besøkt 16. mai 2010. 
  60. ^ Pattishall, Dathan Vance (23. mars 2011). «Cassandra is my NoSQL Solution but». 
  61. ^ «Cassandra at SoundCloud». Arkivert fra originalen 5. september 2013. 
  62. ^ http://www.talentica.com.  Mal:Failed verification
  63. ^ Popescu, Alex. «Cassandra @ Twitter: An Interview with Ryan King». myNoSQL. Arkivert fra originalen 1. mars 2010. Besøkt 29. mars 2010. 
  64. ^ Babcock, Charles. «Twitter Drops MySQL For Cassandra - Cloud databases». InformationWeek. Arkivert fra originalen 2. april 2010. Besøkt 29. mars 2010. 
  65. ^ King, Ryan (10. juli 2010). «Cassandra at Twitter Today». San Francisco, CA, USA: Twitter. Besøkt 20. juni 2014. 
  66. ^ Onnen, Erik. «From 100s to 100s of Millions». 
  67. ^ Wicke, Gabriel. «Wikimedia REST content API is now available in beta». 

Bibliografi[rediger | rediger kilde]

Eksterne lenker[rediger | rediger kilde]

(en) Kategori:Apache Cassandra – bilder, video eller lyd på Wikimedia CommonsRedigere på wikidata Mal:Wikiversity