Apache Cassandra

Apache Cassandra
Skaper(e)Avinash Lakshman, Prashant Malik
Utvikler(e)Apache Software Foundation
Utgitt Juli 2008
Nyeste versjon5.0.9 (7. august 2026)
Kodelagerhttps://github.com/apache/cassandra
OperativsystemLinux Unix-liknende
Skrevet iProgrammeringsspråket Java
TypeNoSQL, database
LisensApache License 2.0
Nettstedcassandra.apache. (en)

Helenos er et grafisk grensesnitt for Cassandra

Apache Cassandra er en fri og åpen 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, 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.»

Historie

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-prosjekt på Google code i juli 2008. I mars 2009 ble det et Apache Incubator-prosjekt. 17. february 2010 ble prosjektet forfremmet til et «top-level»-prosjekt.

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

Utgivelser inkluderer

Versjon Opprinnelig utgivelsesdato Siste versjon Utgivelsesdato Status
Gammel versjon som ikke blir oppdatert: 0.6 2010-04-12 0.6.13 2011-04-18 Ikke lenger støttet
Gammel versjon som ikke blir oppdatert: 0.7 2011-01-10 0.7.10 2011-10-31 Ikke lenger støttet
Gammel versjon som ikke blir oppdatert: 0.8 2011-06-03 0.8.10 2012-02-13 Ikke lenger støttet
Gammel versjon som ikke blir oppdatert: 1.0 2011-10-18 1.0.12 2012-10-04 Ikke lenger støttet
Gammel versjon som ikke blir oppdatert: 1.1 2012-04-24 1.1.12 2013-05-27 Ikke lenger støttet
Gammel versjon som ikke blir oppdatert: 1.2 2013-01-02 1.2.19 2014-09-18 Ikke lenger støttet
Gammel versjon som ikke blir oppdatert: 2.0 2013-09-03 2.0.17 2015-09-21 Ikke lenger støttet
Gammel versjon som fortsatt blir oppdatert: 2.1 2014-09-16 2.1.17 2017-02-21 Fortsatt støttet
Gammel versjon som fortsatt blir oppdatert: 2.2 2015-07-20 2.2.9 2017-02-21 Fortsatt støttet
Gammel versjon som fortsatt blir oppdatert: 3.0 2015-11-09 3.0.13 2017-04-14 Fortsatt støttet
Nyeste utgave: 3.10 2017-02-03 3.10 2017-02-03 Siste utgivelse
Farger:
Gammel versjon som ikke blir oppdatert
Gammel versjon som fortsatt blir oppdatert
Nyeste utgave
Nyeste testutgivelsen

Hovedegenskaper

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. 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.
MapReduce-støtte
Cassandra har Hadoop-integrasjon med MapReduce-støtte. Det er også støtte for Apache Pig og Apache Hive.
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. Språkdrivere er tilgjengelige for Java (JDBC), Python (DBAPI2), Node.JS (Helenus), Go (gocql) og C ++.

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

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

Cassandra er ikke konsistent på radenivå, 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

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. Rader er organisert i tabeller.

Clustering

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

  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

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

Prominente brukere

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

Akademisk bakgrunn

Kommersielle selskap

Alternativer

Referanser

  1. ↑ https://www.crunchbase.com/person/prashant-malik.
  2. ↑ https://x.com/pmalik.
  3. ↑ https://cortexdb.ai/about.
  4. ↑ https://cwiki.apache.org/confluence/display/INCUBATOR/March2009; besøksdato: 9. mars 2023.
  5. ↑ https://github.com/apache/cassandra/releases/tag/cassandra-5.0.9; besøksdato: 8. august 2026.
  6. 1 2 https://projects.apache.org/json/projects/cassandra.json; besøksdato: 8. april 2020.
  7. ↑ https://cassandra.apache.org/_/download.html; besøksdato: 9. mars 2023.
  8. ↑ projects.apache.org, besøkt 8. april 2020[Hentet fra Wikidata]
  9. ↑ api.github.com, besøkt 24. juli 2018[Hentet fra Wikidata]
  10. ↑ 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…»
  11. ↑ 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»
  12. ↑ Hamilton, James (12. juli 2008). «Facebook Releases Cassandra as Open Source». Besøkt 4. juni 2009.
  13. ↑ «Is this the new hotness now?». Mail-archive.com. 2. mars 2009. Arkivert fra originalen 25. april 2010. Besøkt 29. mars 2010.
  14. ↑ «Cassandra is an Apache top level project». Mail-archive.com. 18. februar 2010. Arkivert fra originalen 28. mars 2010. Besøkt 29. mars 2010.
  15. ↑ «The meaning behind the name of Apache Cassandra». Arkivert fra originalen . 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[.]» «Arkivert kopi». Arkivert fra originalen 29. mai 2016. Besøkt 3. juni 2017.
  16. ↑ «The Apache Software Foundation Announces Apache Cassandra Release 0.6  : The Apache Software Foundation Blog». Besøkt 5. januar 2016.
  17. ↑ «The Apache Software Foundation Announces Apache Cassandra 0.7 : The Apache Software Foundation Blog». Besøkt 5. januar 2016.
  18. ↑ Eric Evans. «[Cassandra-user] [RELEASE] 0.8.0». Arkivert fra originalen 8. juni 2015. Besøkt 5. januar 2016.
  19. ↑ «Cassandra 1.0.0. Is Ready for the Enterprise». InfoQ. Besøkt 5. januar 2016.
  20. ↑ «The Apache Software Foundation Announces Apache Cassandra™ v1.1 : The Apache Software Foundation Blog». Besøkt 5. januar 2016.
  21. ↑ «The Apache Software Foundation Announces Apache Cassandra™ v1.2 : The Apache Software Foundation Blog». apache.org. Besøkt 11. desember 2014.
  22. ↑ Eric Evans. «[Cassandra-User] [RELEASE] Apache Cassandra 2.0.4». qnalist.com. Arkivert fra originalen 13. desember 2014. Besøkt 11. desember 2014. «Arkivert kopi». Arkivert fra originalen 13. desember 2014. Besøkt 3. juni 2017.
  23. ↑ Sylvain Lebresne (10. september 2014). «[VOTE SUCCESS] Release Apache Cassandra 2.1.0». mail-archive.com. Besøkt 11. desember 2014.
  24. ↑ «Cassandra 2.2, 3.0, and beyond». 16. juni 2015. Arkivert fra originalen 20. april 2016. Besøkt 22. april 2016.
  25. ↑ «Cassandra Server Releases». cassandra.apache.org. Besøkt 15. desember 2015.
  26. ↑ «Deploying Cassandra across Multiple Data Centers». DataStax. Besøkt 11. desember 2014.
  27. 1 2 DataStax (15. januar 2013). «About data consistency». Besøkt 25. juli 2013.
  28. ↑ "Hadoop Support" Arkivert 16. november 2017 hos Wayback Machine. artikkel på Cassandras wiki
  29. ↑ Intellipaat. «Cassandra Tutorial». Intellipaat. Besøkt 5. januar 2016.
  30. ↑ «DataStax C/C++ Driver for Apache Cassandra». DataStax. Besøkt 15. desember 2014.
  31. ↑ «CQL». Arkivert fra originalen 13. januar 2016. Besøkt 5. januar 2016. «Arkivert kopi». Arkivert fra originalen 13. januar 2016. Besøkt 3. juni 2017.
  32. ↑ «WAT - Cassandra: Row level consistency #$@&%*! - datanerds.io». datanerds.io. Arkivert fra originalen 26. november 2016. Besøkt 28. november 2016.
  33. ↑ 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.»
  34. ↑ DB-Engines. «DB-Engines Ranking of Wide Column Stores». Arkivert fra originalen 6. desember 2015. Besøkt 3. juni 2017.
  35. ↑ DB-Engines. «DB-Engines Ranking». Arkivert fra originalen 21. februar 2020. Besøkt 3. juni 2017.
  36. ↑ «@WalmartLabs». walmartlabs.com. Arkivert fra originalen . Besøkt 11. desember 2014. «Arkivert kopi». Arkivert fra originalen 13. desember 2014. Besøkt 28. januar 2021.
  37. ↑ Luca Martinetti: Apple runs more than 100k [production] Cassandra nodes. på X (tidligere Twitter)
  38. ↑ «Datastores on Appscale». Arkivert fra originalen 7. september 2013. «Arkivert kopi». Arkivert fra originalen 7. september 2013. Besøkt 3. juni 2017.
  39. ↑ «Top Cassandra Summit Sessions For Advanced Cassandra Users». Arkivert fra originalen . Besøkt 3. juni 2017. «Arkivert kopi». Arkivert fra originalen 8. mars 2017. Besøkt 3. juni 2017.
  40. ↑ «Multi-Tenancy in Cassandra at BlackRock».
  41. ↑ «A Persistent Back-End for the ATLAS Online Information Service (P-BEAST)».
  42. ↑ «Re: Cassandra users survey». Mail-archive.com. 21. november 2009. Arkivert fra originalen 17. april 2010. Besøkt 29. mars 2010.
  43. ↑ 4 Months with Cassandra, a love story |Cloudkick, manage servers better Arkivert 11. mai 2011 hos Wayback Machine.
  44. ↑ Finley, Klint (18. februar 2011). «This Week in Consolidation: HP Buys Vertica, Constant Contact Buys Bantam Live and More». Read Write Enterprise.
  45. ↑ Eure, Ian. «Looking to the future with Cassandra».
  46. ↑ Quinn, John. «Saying Yes to NoSQL; Going Steady with Cassandra». Arkivert fra originalen 7. mars 2012. «Arkivert kopi». Arkivert fra originalen 7. mars 2012. Besøkt 3. juni 2017.
  47. ↑ Schonfeld, Erick. «As Digg Struggles, VP Of Engineering Is Shown The Door».
  48. ↑ «Is Cassandra to Blame for Digg v4's Failures?».
  49. ↑ Vishnevskiy, Stanislav (14. januar 2017). «How Discord Stores Billions of Messages». Besøkt 28. januar 2017.
  50. ↑ «Niet compatibele browser». Facebook. Besøkt 29. mars 2010.
  51. 1 2 Muthukkaruppan, Kannan. «The Underlying Technology of Messages».
  52. ↑ Rick Branson (26. juni 2013). «Cassandra at Instagram». DataStax. Besøkt 25. juli 2013.
  53. ↑ Cozzi, Martin (31. august 2011). «Cassandra at Formspring».
  54. ↑ «BlueRunner: Building an Email Service in the Cloud» (PDF). ieee.org. 20. juli 2009. Arkivert fra originalen (PDF) 5. juli 2010. Besøkt 29. mars 2010.
  55. ↑ «Mahalo.com powered by Apache Cassandra™» (PDF). DataStax.com. Santa Clara, CA, USA: DataStax. 10. april 2012. Arkivert fra originalen (PDF) . Besøkt 13. juni 2014. «Arkivert kopi» (PDF). Arkivert fra originalen (PDF) 17. desember 2014. Besøkt 3. juni 2017.
  56. ↑ Watch Cassandra at Mahalo.com |DataStax Episodes |Blip Arkivert 10. desember 2011 hos Wayback Machine.
  57. ↑ Cockcroft, Adrian (11. juli 2011). «Migrating Netflix from Datacenter Oracle to Global Cassandra». slideshare.net. Besøkt 13. juni 2014.
  58. ↑ Izrailevsky, Yury (28. januar 2011). «NoSQL at Netflix».
  59. ↑ «Nutanix Bible». Arkivert fra originalen . Besøkt 3. juni 2017. «Arkivert kopi». Arkivert fra originalen 10. desember 2015. Besøkt 3. juni 2017.
  60. ↑ Ooyala (18. mai 2010). «Designing a Scalable Database for Online Video Analytics» (PDF). DataStax.com. Mountain View CA, USA. Arkivert fra originalen (PDF) . Besøkt 14. juni 2014. «Arkivert kopi» (PDF). Arkivert fra originalen (PDF) 17. desember 2014. Besøkt 3. juni 2017.
  61. ↑ Mainstay LLC (11. november 2013). «DataStax Case Study of Openwave Messaging» (PDF). DataStax.com. Santa Clara, CA, USA: DataStax. Arkivert fra originalen (PDF) . Besøkt 15. juni 2014. «Arkivert kopi» (PDF). Arkivert fra originalen (PDF) 7. september 2014. Besøkt 3. juni 2017.
  62. ↑ Ad Serving Technology - Advanced Optimization, Forecasting, & Targeting |OpenX Arkivert 7. oktober 2011 hos Wayback Machine.
  63. ↑ Smalley, Preston (20. mars 2011). «An important milestone - and it's only the beginning!». Arkivert fra originalen 26. september 2011. «Arkivert kopi». Arkivert fra originalen 26. september 2011. Besøkt 3. juni 2017.
  64. ↑ «Plexistor for Apache Cassandra». Arkivert fra originalen 1. mars 2021. Besøkt 3. juni 2017.
  65. ↑ Grigorik, Ilya (29. mars 2011). «Webpulp TV: Scaling PostRank with Ilya Grigorik». Arkivert fra originalen 23. september 2011. «Arkivert kopi». Arkivert fra originalen 23. september 2011. Besøkt 3. juni 2017.
  66. ↑ «Hadoop and Cassandra (at Rackspace)». Stu Hood. 23. april 2010. Besøkt 1. september 2011.
  67. ↑ 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. «Arkivert kopi». Arkivert fra originalen 25. mars 2010. Besøkt 3. juni 2017.
  68. ↑ 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. «Arkivert kopi». Arkivert fra originalen 14. mai 2010. Besøkt 3. juni 2017.
  69. ↑ Pattishall, Dathan Vance (23. mars 2011). «Cassandra is my NoSQL Solution but».
  70. ↑ «Cassandra at SoundCloud». Arkivert fra originalen 5. september 2013. «Arkivert kopi». Arkivert fra originalen 5. september 2013. Besøkt 3. juni 2017.
  71. ↑ http://www.talentica.com. Mal:Failed verification
  72. ↑ Popescu, Alex. «Cassandra @ Twitter: An Interview with Ryan King». myNoSQL. Arkivert fra originalen 1. mars 2010. Besøkt 29. mars 2010.
  73. ↑ Babcock, Charles. «Twitter Drops MySQL For Cassandra - Cloud databases». InformationWeek. Arkivert fra originalen 2. april 2010. Besøkt 29. mars 2010.
  74. ↑ King, Ryan (10. juli 2010). «Cassandra at Twitter Today». blog.twitter.com. San Francisco, CA, USA: Twitter. Besøkt 20. juni 2014.
  75. ↑ Onnen, Erik. «From 100s to 100s of Millions».
  76. ↑ Wicke, Gabriel. «Wikimedia REST content API is now available in beta».

Bibliografi

Eksterne lenker