SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
Jonathan Ellis
jbellis@riptano.com / @spyced
The Cassandra Distributed Database
Tuesday, November 30, 2010
Bigtable, 2006 Dynamo, 2007
OSS, 2008
Incubator, 2009 TLP, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Why Cassandra?
✤ Relational databases are not designed to scale
✤ B-trees are slow
✤ and require read-before-write
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
(“The eBay Architecture,” Randy Shoup and Dan Pritchett)
Tuesday, November 30, 2010
Tuesday, November 30, 2010
eBay: NoSQL pioneer
✤ “BASE is diametrically opposed to ACID. Where ACID is
pessimistic and forces consistency at the end of every
operation, BASE is optimistic and accepts that the
database consistency will be in a state of flux. Although
this sounds impossible to cope with, in reality it is quite
manageable and leads to levels of scalability that cannot
be obtained with ACID.”
✤ ”BASE: An Acid Alternative,” Dan Pritchett, eBay
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Commitlog
MemtableWriter
Reader
The Log-Structured Merge-Tree,
Bigtable: A Distributed Storage System
for Structured Data
Tuesday, November 30, 2010
Myth 1
✤ “Cassandra is for people who don’t understand {SQL,
denormalization, query tuning, ...}”
✤ Similarly: “Only users of [database X] are turning to Cassandra,
because X sucks.”
Tuesday, November 30, 2010
Myth 2
✤ “Only huge social media sites care about scalability.”
Tuesday, November 30, 2010
Cassandra in production
✤ Digital Reasoning: NLP + entity analytics
✤ OpenX: largest publisher-side ad network in the world
✤ Cloudkick: performance data & aggregation
✤ SimpleGEO: location-as-API
✤ Ooyala: video analytics and business intelligence
✤ ngmoco: massively multiplayer game worlds
Tuesday, November 30, 2010
Myth 3
✤ “Cassandra is only appropriate for unimportant data.”
Tuesday, November 30, 2010
Durabilty
✤ Write to commitlog
✤ fsync is cheap since it’s append-only
✤ Write to memtable
✤ [amortized] flush memtable to sstable
Tuesday, November 30, 2010
Commitlog
MemtableWriter
Reader
The Log-Structured Merge-Tree,
Bigtable: A Distributed Storage System
for Structured Data
Tuesday, November 30, 2010
SSTable format, briefly
<row data 0>
<row data 1>
...
<row data 127>
...
<row data 255>
...
<key 127>
<key 255>
...
Sorted [clustered] by row key
Tuesday, November 30, 2010
Scaling
Tuesday, November 30, 2010
A
L
T
W
Tuesday, November 30, 2010
A
L
T
W
F
Tuesday, November 30, 2010
A
L
T
W
F
(A-L]
Tuesday, November 30, 2010
A
L
T
W
F(A-F]
(F-L]
Tuesday, November 30, 2010
A
L
T
W
F
Key “C”
Tuesday, November 30, 2010
Reliability
✤ No single points of failure
✤ Multiple datacenters
✤ Monitorable
Tuesday, November 30, 2010
Some headlines
✤ “Resyncing Broken MySQL Replication”
✤ “How To Repair MySQL Replication”
✤ “Fixing Broken MySQL Database Replication”
✤ “Replication on Linux broken after db restore”
✤ “MySQL :: Repairing broken replication”
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Good architecture solves multiple
problems at once
✤ Availability in single datacenter
✤ Availablility in multiple datacenters
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
X
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
X
hint
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
X
hint
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
U
Tuesday, November 30, 2010
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
Key “C”
U
Tuesday, November 30, 2010
A
L
T
W
F
P
Y
U
Key “C”
Tuesday, November 30, 2010
Tuneable consistency
✤ ONE, QUORUM, ALL
✤ R + W > N
✤ Choose availability vs consistency (and latency)
Tuesday, November 30, 2010
Monitorable
Tuesday, November 30, 2010
JMX
Tuesday, November 30, 2010
Ripcord
Tuesday, November 30, 2010
Data model tradeoffs
✤ Twitter: “Fifteen months ago, it took two weeks to
perform ALTER TABLE on the statuses [tweets] table.”
Tuesday, November 30, 2010
A static ColumnFamily
Tuesday, November 30, 2010
Tuesday, November 30, 2010
A dynamic ColumnFamily
Tuesday, November 30, 2010
SELECT * FROM tweets
WHERE user_id IN (SELECT follower FROM followers WHERE user_id = ?)
followers
?
tweets
timeline
?
uuid:tweet
Tuesday, November 30, 2010
SuperColumns = full denormalization
Tuesday, November 30, 2010
A little deeper
✤ http://twissandra.com
✤ http://github.com/jhermes/twissjava
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Tuesday, November 30, 2010
Mutator<String> m = createMutator("Twissandra", stringExtractor);
MutationResult mr = m.insert(tweetId,
"Tweet",
createStringColumn("uname", uname))
  .insert(tweetId,
"Tweet",
createStringColumn("body", body));
for (String follower : getFollowers(uname)) {
mr.insert(follower,
"Timeline",
createColumn(timestamp,
tweetId,
longExtractor,
stringExtractor));
}
m.execute()
Tuesday, November 30, 2010
SliceQuery<String, String, String> q
= createSliceQuery("Twissandra",
stringExtractor,
stringExtractor,
stringExtractor);
q.setColumnFamily("Timeline")
.setKey(uname)
.setRange(startTimestamp, null, true, 40);
ColumnSlice<String, String> slice = q.execute().get();
Tuesday, November 30, 2010
API cake
✤ libpq
✤ JDBC
✤ JPA
✤ Thrift
✤ Pelops, Hector
✤ Kundera, ?
Tuesday, November 30, 2010
Analytics in Cassandra
✤ @afex: “Cassandra + Pig (Hadoop) is very exciting. A 7
line script to analyze data from my entire cluster
transparently, with no ETL? Yes, please”
Tuesday, November 30, 2010
TaskTracker
JobTracker
Tuesday, November 30, 2010
0.7
✤ More control over replica placement
✤ Hadoop refinements
✤ Secondary indexes
✤ Online schema changes
✤ Large row support (> 2GB)
✤ Dynamic routing around slow nodes
Tuesday, November 30, 2010
When do you need Cassandra?
✤ Ian Eure: “If you’re deploying memcache on top of your
database, you’re inventing your own ad-hoc, difficult to
maintain NoSQL data store”
Tuesday, November 30, 2010
Not Only SQL
✤ Curt Monash: “ACID-compliant transaction integrity
commonly costs more in terms of DBMS licenses and
many other components of TCO (Total Cost of
Ownership) than [scalable NoSQL]. Worse, it can actually
hurt application uptime, by forcing your system to pull in
its horns and stop functioning in the face of failures that a
non-transactional system might smoothly work around.
Other flavors of “complexity can be a bad thing” apply as
well. Thus, transaction integrity can be more trouble
than it’s worth.” [Curt’s emphasis]
Tuesday, November 30, 2010
More
✤ http://riptano.com/docs
✤ http://wiki.apache.org/cassandra/
ArticlesAndPresentations
✤ http://wiki.apache.org/cassandra/ArchitectureInternals
Tuesday, November 30, 2010
Questions
Tuesday, November 30, 2010

Más contenido relacionado

Similar a Cassandra devoxx 2010

AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
Atlassian
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
Atlassian
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
Atlassian
 
MongoDB & Mongomapper 4 real
MongoDB & Mongomapper 4 realMongoDB & Mongomapper 4 real
MongoDB & Mongomapper 4 real
jan_mindmatters
 
Cassandra nosql eu 2010
Cassandra nosql eu 2010Cassandra nosql eu 2010
Cassandra nosql eu 2010
jbellis
 
08 Table Views
08 Table Views08 Table Views
08 Table Views
Mahmoud
 

Similar a Cassandra devoxx 2010 (17)

Developing in HTML5: Widgetbox & Sencha Touch
Developing in HTML5: Widgetbox & Sencha TouchDeveloping in HTML5: Widgetbox & Sencha Touch
Developing in HTML5: Widgetbox & Sencha Touch
 
Tree tricks osdc_melbourne_20101124
Tree tricks osdc_melbourne_20101124Tree tricks osdc_melbourne_20101124
Tree tricks osdc_melbourne_20101124
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
 
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
AtlasCamp 2010: Needs more jQuery - Using advanced Javascript in Atlassian Pl...
 
Advanced Seaside
Advanced SeasideAdvanced Seaside
Advanced Seaside
 
Linked Data and Local Government
Linked Data and Local GovernmentLinked Data and Local Government
Linked Data and Local Government
 
Boosting performance with Mysql partitions
Boosting performance with Mysql partitionsBoosting performance with Mysql partitions
Boosting performance with Mysql partitions
 
Introduction to Raphaël
Introduction to RaphaëlIntroduction to Raphaël
Introduction to Raphaël
 
openTSDB - Metrics for a distributed world
openTSDB - Metrics for a distributed worldopenTSDB - Metrics for a distributed world
openTSDB - Metrics for a distributed world
 
MongoDB & Mongomapper 4 real
MongoDB & Mongomapper 4 realMongoDB & Mongomapper 4 real
MongoDB & Mongomapper 4 real
 
Cassandra nosql eu 2010
Cassandra nosql eu 2010Cassandra nosql eu 2010
Cassandra nosql eu 2010
 
Mongodb railscamphh
Mongodb railscamphhMongodb railscamphh
Mongodb railscamphh
 
Akka: Distributed by Design - Björn Antonsson (Typesafe)
Akka: Distributed by Design  - Björn Antonsson (Typesafe)Akka: Distributed by Design  - Björn Antonsson (Typesafe)
Akka: Distributed by Design - Björn Antonsson (Typesafe)
 
08 table views
08 table views08 table views
08 table views
 
08 Table Views
08 Table Views08 Table Views
08 Table Views
 

Más de jbellis

Cassandra 2.1
Cassandra 2.1Cassandra 2.1
Cassandra 2.1
jbellis
 
Tokyo cassandra conference 2014
Tokyo cassandra conference 2014Tokyo cassandra conference 2014
Tokyo cassandra conference 2014
jbellis
 
Cassandra Summit EU 2013
Cassandra Summit EU 2013Cassandra Summit EU 2013
Cassandra Summit EU 2013
jbellis
 
London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0
jbellis
 
Cassandra Summit 2013 Keynote
Cassandra Summit 2013 KeynoteCassandra Summit 2013 Keynote
Cassandra Summit 2013 Keynote
jbellis
 
Cassandra at NoSql Matters 2012
Cassandra at NoSql Matters 2012Cassandra at NoSql Matters 2012
Cassandra at NoSql Matters 2012
jbellis
 
Top five questions to ask when choosing a big data solution
Top five questions to ask when choosing a big data solutionTop five questions to ask when choosing a big data solution
Top five questions to ask when choosing a big data solution
jbellis
 
State of Cassandra 2012
State of Cassandra 2012State of Cassandra 2012
State of Cassandra 2012
jbellis
 
Massively Scalable NoSQL with Apache Cassandra
Massively Scalable NoSQL with Apache CassandraMassively Scalable NoSQL with Apache Cassandra
Massively Scalable NoSQL with Apache Cassandra
jbellis
 
Cassandra 1.1
Cassandra 1.1Cassandra 1.1
Cassandra 1.1
jbellis
 
Pycon 2012 What Python can learn from Java
Pycon 2012 What Python can learn from JavaPycon 2012 What Python can learn from Java
Pycon 2012 What Python can learn from Java
jbellis
 
Apache Cassandra: NoSQL in the enterprise
Apache Cassandra: NoSQL in the enterpriseApache Cassandra: NoSQL in the enterprise
Apache Cassandra: NoSQL in the enterprise
jbellis
 
Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)
Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)
Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)
jbellis
 
Cassandra at High Performance Transaction Systems 2011
Cassandra at High Performance Transaction Systems 2011Cassandra at High Performance Transaction Systems 2011
Cassandra at High Performance Transaction Systems 2011
jbellis
 
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
jbellis
 
What python can learn from java
What python can learn from javaWhat python can learn from java
What python can learn from java
jbellis
 

Más de jbellis (20)

Five Lessons in Distributed Databases
Five Lessons  in Distributed DatabasesFive Lessons  in Distributed Databases
Five Lessons in Distributed Databases
 
Data day texas: Cassandra and the Cloud
Data day texas: Cassandra and the CloudData day texas: Cassandra and the Cloud
Data day texas: Cassandra and the Cloud
 
Cassandra Summit 2015
Cassandra Summit 2015Cassandra Summit 2015
Cassandra Summit 2015
 
Cassandra summit keynote 2014
Cassandra summit keynote 2014Cassandra summit keynote 2014
Cassandra summit keynote 2014
 
Cassandra 2.1
Cassandra 2.1Cassandra 2.1
Cassandra 2.1
 
Tokyo cassandra conference 2014
Tokyo cassandra conference 2014Tokyo cassandra conference 2014
Tokyo cassandra conference 2014
 
Cassandra Summit EU 2013
Cassandra Summit EU 2013Cassandra Summit EU 2013
Cassandra Summit EU 2013
 
London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0
 
Cassandra Summit 2013 Keynote
Cassandra Summit 2013 KeynoteCassandra Summit 2013 Keynote
Cassandra Summit 2013 Keynote
 
Cassandra at NoSql Matters 2012
Cassandra at NoSql Matters 2012Cassandra at NoSql Matters 2012
Cassandra at NoSql Matters 2012
 
Top five questions to ask when choosing a big data solution
Top five questions to ask when choosing a big data solutionTop five questions to ask when choosing a big data solution
Top five questions to ask when choosing a big data solution
 
State of Cassandra 2012
State of Cassandra 2012State of Cassandra 2012
State of Cassandra 2012
 
Massively Scalable NoSQL with Apache Cassandra
Massively Scalable NoSQL with Apache CassandraMassively Scalable NoSQL with Apache Cassandra
Massively Scalable NoSQL with Apache Cassandra
 
Cassandra 1.1
Cassandra 1.1Cassandra 1.1
Cassandra 1.1
 
Pycon 2012 What Python can learn from Java
Pycon 2012 What Python can learn from JavaPycon 2012 What Python can learn from Java
Pycon 2012 What Python can learn from Java
 
Apache Cassandra: NoSQL in the enterprise
Apache Cassandra: NoSQL in the enterpriseApache Cassandra: NoSQL in the enterprise
Apache Cassandra: NoSQL in the enterprise
 
Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)
Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)
Dealing with JVM limitations in Apache Cassandra (Fosdem 2012)
 
Cassandra at High Performance Transaction Systems 2011
Cassandra at High Performance Transaction Systems 2011Cassandra at High Performance Transaction Systems 2011
Cassandra at High Performance Transaction Systems 2011
 
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
Cassandra 1.0 and the future of big data (Cassandra Tokyo 2011)
 
What python can learn from java
What python can learn from javaWhat python can learn from java
What python can learn from java
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Cassandra devoxx 2010