SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
Indexing Cassandra data in SQL-storage

Indexing Cassandra data in SQL-storage

Kurpilyansky Eugene
SKB Kontur
December 9th, 2013
Indexing Cassandra data in SQL-storage
What do we want?

Suppose, we want to store objects of dierent types in
Cassandra.
Any object has a primary string key.
Cassandra is well-suited for using it as key-value storage.
But we usually want to search among all objects of same type
by some criterion.
Results of searching must be consistent and reect current
state of database.
How can we implement storage which satises these
requirements?
Indexing Cassandra data in SQL-storage
What do we want?

Suppose, we want to store objects of dierent types in
Cassandra.
Any object has a primary string key.
Cassandra is well-suited for using it as key-value storage.
But we usually want to search among all objects of same type
by some criterion.
Results of searching must be consistent and reect current
state of database.
How can we implement storage which satises these
requirements?
Indexing Cassandra data in SQL-storage
What do we want?

Suppose, we want to store objects of dierent types in
Cassandra.
Any object has a primary string key.
Cassandra is well-suited for using it as key-value storage.
But we usually want to search among all objects of same type
by some criterion.
Results of searching must be consistent and reect current
state of database.
How can we implement storage which satises these
requirements?
Indexing Cassandra data in SQL-storage
What do we want?

Suppose, we want to store objects of dierent types in
Cassandra.
Any object has a primary string key.
Cassandra is well-suited for using it as key-value storage.
But we usually want to search among all objects of same type
by some criterion.
Results of searching must be consistent and reect current
state of database.
How can we implement storage which satises these
requirements?
Indexing Cassandra data in SQL-storage
What do we want?

Suppose, we want to store objects of dierent types in
Cassandra.
Any object has a primary string key.
Cassandra is well-suited for using it as key-value storage.
But we usually want to search among all objects of same type
by some criterion.
Results of searching must be consistent and reect current
state of database.
How can we implement storage which satises these
requirements?
Indexing Cassandra data in SQL-storage
Using native Cassandra indexes

We can use native Cassandra indexes.
Advantages
There is no need to support additional storage.
Disadvantages
Every custom query may require new CF-structure for
eective searching.
SQL-indexes are more ecient than Cassandra's indexes.
There exist a lot of complex indexes (e.g. full-text search
indexing).
Indexing Cassandra data in SQL-storage
Using native Cassandra indexes

We can use native Cassandra indexes.
Advantages
There is no need to support additional storage.
Disadvantages
Every custom query may require new CF-structure for
eective searching.
SQL-indexes are more ecient than Cassandra's indexes.
There exist a lot of complex indexes (e.g. full-text search
indexing).
Indexing Cassandra data in SQL-storage
Using native Cassandra indexes

We can use native Cassandra indexes.
Advantages
There is no need to support additional storage.
Disadvantages
Every custom query may require new CF-structure for
eective searching.
SQL-indexes are more ecient than Cassandra's indexes.
There exist a lot of complex indexes (e.g. full-text search
indexing).
Indexing Cassandra data in SQL-storage
Using native Cassandra indexes

We can use native Cassandra indexes.
Advantages
There is no need to support additional storage.
Disadvantages
Every custom query may require new CF-structure for
eective searching.
SQL-indexes are more ecient than Cassandra's indexes.
There exist a lot of complex indexes (e.g. full-text search
indexing).
Indexing Cassandra data in SQL-storage
Using native Cassandra indexes

We can use native Cassandra indexes.
Advantages
There is no need to support additional storage.
Disadvantages
Every custom query may require new CF-structure for
eective searching.
SQL-indexes are more ecient than Cassandra's indexes.
There exist a lot of complex indexes (e.g. full-text search
indexing).
Indexing Cassandra data in SQL-storage
Using synchronization with SQL-storage
Main idea

Main idea
Run IndexService application which is synchronizing data in
SQL-storage with data in Cassandra (constantly,
in background thread).
To perform a search we should make a query to IndexService
which will return the search result after nishing SQL-storage
synchronization process.
Indexing Cassandra data in SQL-storage
Using synchronization with SQL-storage
Main idea

Main idea
Run IndexService application which is synchronizing data in
SQL-storage with data in Cassandra (constantly,
in background thread).
To perform a search we should make a query to IndexService
which will return the search result after nishing SQL-storage
synchronization process.
Indexing Cassandra data in SQL-storage
Using synchronization with SQL-storage
Implementation of EventLog

Create event log
One event per one write-request or delete-request.
Event log sorted by time of event.
Indexing Cassandra data in SQL-storage
Using synchronization with SQL-storage
Implementation of EventLog

Create event log
One event per one write-request or delete-request.
Event log sorted by time of event.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of EventLog

Event
string EventId;
long Timestamp;
string ObjectId;
interface IEventLog
void AddEvent(Event event);
IEnumerableEvent GetEvents(long fromTicks);

New implementation of IObjectStorage
Before writing or deleting objects call method
IEventLog.AddEvent.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of EventLog

Event
string EventId;
long Timestamp;
string ObjectId;
interface IEventLog
void AddEvent(Event event);
IEnumerableEvent GetEvents(long fromTicks);

New implementation of IObjectStorage
Before writing or deleting objects call method
IEventLog.AddEvent.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of EventLog

Event
string EventId;
long Timestamp;
string ObjectId;
interface IEventLog
void AddEvent(Event event);
IEnumerableEvent GetEvents(long fromTicks);

New implementation of IObjectStorage
Before writing or deleting objects call method
IEventLog.AddEvent.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of EventLog

EventLog.AddEvent(Event event)

Create column:
ColumnName = event.Timestamp + ':' + event.EventId
ColumnValue = event
EventLog.GetEvents(long fromTicks)
Execute get_slice from exclusive column for one row.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of EventLog

EventLog.AddEvent(Event event)

Create column:
ColumnName = event.Timestamp + ':' + event.EventId
ColumnValue = event
EventLog.GetEvents(long fromTicks)
Execute get_slice from exclusive column for one row.

We should split all event log into rows using
PartitionInterval to limit size of rows.
PartitionInterval is some constant period of time (e.g.
one hour, or six minutes).
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of EventLog

We should split all event log into rows using
PartitionInterval to limit size of rows.
PartitionInterval is some constant period of time (e.g.
one hour, or six minutes).
EventLog.AddEvent(Event event)

Create column:
RowKey = event.Timestamp / PartitionInterval.Ticks
ColumnName = event.Timestamp + ':' + event.EventId
ColumnValue = event
EventLog.GetEvents(long fromTicks)
Execute get_slice from exclusive column for one or

more rows.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

IndexService
It has a local SQL-storage (one storage per one service replica).
There is one SQL-table per one type of object.
There is one specic SQL-table for storing times of last
synchronization for each type of object.
There is one background thread per one type of object, which
is reading event log and updating SQL-storage.
For executing incoming SQL-query, we can use data from
SQL-storage and a little range of events.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

IndexService
It has a local SQL-storage (one storage per one service replica).
There is one SQL-table per one type of object.
There is one specic SQL-table for storing times of last
synchronization for each type of object.
There is one background thread per one type of object, which
is reading event log and updating SQL-storage.
For executing incoming SQL-query, we can use data from
SQL-storage and a little range of events.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

IndexService
It has a local SQL-storage (one storage per one service replica).
There is one SQL-table per one type of object.
There is one specic SQL-table for storing times of last
synchronization for each type of object.
There is one background thread per one type of object, which
is reading event log and updating SQL-storage.
For executing incoming SQL-query, we can use data from
SQL-storage and a little range of events.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

IndexService
It has a local SQL-storage (one storage per one service replica).
There is one SQL-table per one type of object.
There is one specic SQL-table for storing times of last
synchronization for each type of object.
There is one background thread per one type of object, which
is reading event log and updating SQL-storage.
For executing incoming SQL-query, we can use data from
SQL-storage and a little range of events.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

IndexService
It has a local SQL-storage (one storage per one service replica).
There is one SQL-table per one type of object.
There is one specic SQL-table for storing times of last
synchronization for each type of object.
There is one background thread per one type of object, which
is reading event log and updating SQL-storage.
For executing incoming SQL-query, we can use data from
SQL-storage and a little range of events.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Periodic synchronization action
Set startSynchronizationTime = NowTicks.
Find all events which should be processed.
Process these events: update SQL-storage and keep
unprocessed events (they should be processed on the next
iteration).
Update time of last synchronization to
startSynchronizationTime in SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Periodic synchronization action
Set startSynchronizationTime = NowTicks.
Find all events which should be processed.
Process these events: update SQL-storage and keep
unprocessed events (they should be processed on the next
iteration).
Update time of last synchronization to
startSynchronizationTime in SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Periodic synchronization action
Set startSynchronizationTime = NowTicks.
Find all events which should be processed.
Process these events: update SQL-storage and keep
unprocessed events (they should be processed on the next
iteration).
Update time of last synchronization to
startSynchronizationTime in SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Periodic synchronization action
Set startSynchronizationTime = NowTicks.
Find all events which should be processed.
Process these events: update SQL-storage and keep
unprocessed events (they should be processed on the next
iteration).
Update time of last synchronization to
startSynchronizationTime in SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

ProcessEvents(Event[] events)

This function actualizes values of related objects in SQL-storage.
Remember, that we update object after creating an event.
So, we can not process some of events at the moment, because
correspoding object isn't updated yet.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

ProcessEvents(Event[] events)

This function actualizes values of related objects in SQL-storage.
Remember, that we update object after creating an event.
So, we can not process some of events at the moment, because
correspoding object isn't updated yet.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Event[] ProcessEvents(Event[] events)

This function actualizes values of related objects in SQL-storage
and returns events, which have not been processed.
How will this function be implemented?
For every event we should analyze corresponding objects from both
Cassandra and SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Event[] ProcessEvents(Event[] events)

This function actualizes values of related objects in SQL-storage
and returns events, which have not been processed.
How will this function be implemented?
For every event we should analyze corresponding objects from both
Cassandra and SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Event[] ProcessEvents(Event[] events)

This function actualizes values of related objects in SQL-storage
and returns events, which have not been processed.
How will this function be implemented?
For every event we should analyze corresponding objects from both
Cassandra and SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 1
event = {Timestamp: 2008}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

What should we do?
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 1
event = {Timestamp: 2008}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

Write cassObj in SQL-storage and mark event as processed.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 1
event = {Timestamp: 2008}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

Write cassObj in SQL-storage and mark event as processed.
Example 2
event = {Timestamp: 2012}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

What should we do?
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 1
event = {Timestamp: 2008}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

Write cassObj in SQL-storage and mark event as processed.
Example 2
event = {Timestamp: 2012}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

Timestamp of event is greater than timestamp of cassObj.
Probably, it needs to wait for updating of object.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 1
event = {Timestamp: 2008}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

Write cassObj in SQL-storage and mark event as processed.
Example 2
event = {Timestamp: 2012}
cassObj = {Timestamp: 2008, School: 'USU'}
sqlObj = {Timestamp: 2005, School: 'AESÑ USU'}

Timestamp of event is greater than timestamp of cassObj.
Probably, it needs to wait for updating of object.
Write cassObj in SQL-storage and mark event as unprocessed.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 3
event = {Timestamp: 1997}
cassObj is missing
sqlObj is missing

What should we do?
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 3
event = {Timestamp: 1997}
cassObj is missing
sqlObj is missing

Probably, that event corresponds to the creation of object.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 3
event = {Timestamp: 1997}
cassObj is missing
sqlObj is missing

Probably, that event corresponds to the creation of object.
Mark event as unprocessed.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 3
event = {Timestamp: 1997}
cassObj is missing
sqlObj is missing

Probably, that event corresponds to the creation of object.
Mark event as unprocessed.
Example 4
event = {Timestamp: 2017}
cassObj is missing
sqlObj = {Timestamp: 2012, School: 'UFU'}

What should we do?
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 3
event = {Timestamp: 1997}
cassObj is missing
sqlObj is missing

Probably, that event corresponds to the creation of object.
Mark event as unprocessed.
Example 4
event = {Timestamp: 2017}
cassObj is missing
sqlObj = {Timestamp: 2012, School: 'UFU'}

Two cases are possible:
1 That event corresponds to the deletion of object.
2 That event corresponds to the creation of object. sqlObj is
not missing, because there were two operationsin a row: delete
and create.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Example 4
event = {Timestamp: 2017}
cassObj is missing
sqlObj = {Timestamp: 2012, School: 'UFU'}

Two cases are possible:
1 That event corresponds to the deletion of object.
2 That event corresponds to the creation of object. sqlObj is
not missing, because there were two operationsin a row: delete
and create.
Delete sqlObj from SQL-storage and mark event as unprocessed.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Event[] ProcessEvents(Event[] events)

Read objects, which occured in these events, from Cassandra and
SQL-storage (some of them can be missing).
For each (event, cassObj, sqlObj) do
If cassObj is not missing

cassObj in SQL-storage
event.Timestamp = cassObj.Timestamp

Save
If

then mark
else mark

event as processed;
event as unprocessed.

else (i.e. cassObj is missing)

sqlObj from SQL-storage
event as unprocessed.

Delete
Mark

if it's not missing.

Return events which has been marked as unprocessed.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Periodic synchronization action
Set startSynchronizationTime = NowTicks.
Find all events which should be processed.
Process these events: update SQL-storage and keep
unprocessed events (they should be processed on the next
iteration).
Update time of last synchronization to
startSynchronizationTime in SQL-storage.
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

What events should we use as arguments in ProcessEvents
function?
Of course, all unprocessed events from previous iteration.
Also all new events, i.e. IEventLog.GetEvents(fromTicks).
What is fromTicks?
fromTicks = lastSynchronizationTime?
No. Unfortunately, any operation with Cassandra can be
executed for a long time.
This time is limited by

writeTimeout

=

attemptsCount · connectionTimeout.

We should make undertow back, otherwise we can lose some
events.
fromTicks = lastSynchronizationTime - writeTimeout
Indexing Cassandra data in SQL-storage
Synchronizing SQL-storage with Cassandra
Implementation of IndexService

Executing search request
Indexing Cassandra data in SQL-storage

Advantages.
Scalability.
Availability.
Fault tolerance.
Sharding.
Indexing Cassandra data in SQL-storage

Advantages.
Scalability.
Availability.
Fault tolerance.
Sharding.
Indexing Cassandra data in SQL-storage
Questions

Thank you for your attention. Any questions?

Contenu connexe

Tendances

Elasticsearch in Netflix
Elasticsearch in NetflixElasticsearch in Netflix
Elasticsearch in NetflixDanny Yuan
 
Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...
Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...
Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...DataStax
 
What's new in Elasticsearch v5
What's new in Elasticsearch v5What's new in Elasticsearch v5
What's new in Elasticsearch v5Idan Tohami
 
Disney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand Users
Disney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand UsersDisney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand Users
Disney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand UsersScyllaDB
 
Elastic Stack Introduction
Elastic Stack IntroductionElastic Stack Introduction
Elastic Stack IntroductionVikram Shinde
 
An Introduction to Distributed Search with Datastax Enterprise Search
An Introduction to Distributed Search with Datastax Enterprise SearchAn Introduction to Distributed Search with Datastax Enterprise Search
An Introduction to Distributed Search with Datastax Enterprise SearchPatricia Gorla
 
Cassandra Summit 2015: Intro to DSE Search
Cassandra Summit 2015: Intro to DSE SearchCassandra Summit 2015: Intro to DSE Search
Cassandra Summit 2015: Intro to DSE SearchCaleb Rackliffe
 
Enhancements that will make your sql database roar sp1 edition sql bits 2017
Enhancements that will make your sql database roar sp1 edition sql bits 2017Enhancements that will make your sql database roar sp1 edition sql bits 2017
Enhancements that will make your sql database roar sp1 edition sql bits 2017Bob Ward
 
Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...
Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...
Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...DataStax
 
Amazon Athena Hands-On Workshop
Amazon Athena Hands-On WorkshopAmazon Athena Hands-On Workshop
Amazon Athena Hands-On WorkshopDoiT International
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101Ike Ellis
 
SQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should KnowSQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should KnowBob Ward
 
Real Time Analytics with Dse
Real Time Analytics with DseReal Time Analytics with Dse
Real Time Analytics with DseDataStax Academy
 
NDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data LakeNDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data LakeTom Kerkhove
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraJim Hatcher
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchJoe Alex
 
What's new in MongoDB 2.6 at India event by company
What's new in MongoDB 2.6 at India event by companyWhat's new in MongoDB 2.6 at India event by company
What's new in MongoDB 2.6 at India event by companyMongoDB APAC
 
Scylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS Insight
Scylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS InsightScylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS Insight
Scylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS InsightScyllaDB
 
Webinar : Nouveautés de MongoDB 3.2
Webinar : Nouveautés de MongoDB 3.2Webinar : Nouveautés de MongoDB 3.2
Webinar : Nouveautés de MongoDB 3.2MongoDB
 

Tendances (20)

Elasticsearch in Netflix
Elasticsearch in NetflixElasticsearch in Netflix
Elasticsearch in Netflix
 
Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...
Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...
Oracle: Let My People Go! (Shu Zhang, Ilya Sokolov, Symantec) | Cassandra Sum...
 
What's new in Elasticsearch v5
What's new in Elasticsearch v5What's new in Elasticsearch v5
What's new in Elasticsearch v5
 
Disney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand Users
Disney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand UsersDisney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand Users
Disney+ Hotstar: Scaling NoSQL for Millions of Video On-Demand Users
 
Elastic Stack Introduction
Elastic Stack IntroductionElastic Stack Introduction
Elastic Stack Introduction
 
An Introduction to Distributed Search with Datastax Enterprise Search
An Introduction to Distributed Search with Datastax Enterprise SearchAn Introduction to Distributed Search with Datastax Enterprise Search
An Introduction to Distributed Search with Datastax Enterprise Search
 
Cassandra Summit 2015: Intro to DSE Search
Cassandra Summit 2015: Intro to DSE SearchCassandra Summit 2015: Intro to DSE Search
Cassandra Summit 2015: Intro to DSE Search
 
Enhancements that will make your sql database roar sp1 edition sql bits 2017
Enhancements that will make your sql database roar sp1 edition sql bits 2017Enhancements that will make your sql database roar sp1 edition sql bits 2017
Enhancements that will make your sql database roar sp1 edition sql bits 2017
 
Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...
Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...
Tales From the Field: The Wrong Way of Using Cassandra (Carlos Rolo, Pythian)...
 
Amazon Athena Hands-On Workshop
Amazon Athena Hands-On WorkshopAmazon Athena Hands-On Workshop
Amazon Athena Hands-On Workshop
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101
 
SQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should KnowSQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should Know
 
Real Time Analytics with Dse
Real Time Analytics with DseReal Time Analytics with Dse
Real Time Analytics with Dse
 
NDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data LakeNDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data Lake
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into Cassandra
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using Elasticsearch
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
What's new in MongoDB 2.6 at India event by company
What's new in MongoDB 2.6 at India event by companyWhat's new in MongoDB 2.6 at India event by company
What's new in MongoDB 2.6 at India event by company
 
Scylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS Insight
Scylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS InsightScylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS Insight
Scylla Summit 2018: From SAP to Scylla - Tracking the Fleet at GPS Insight
 
Webinar : Nouveautés de MongoDB 3.2
Webinar : Nouveautés de MongoDB 3.2Webinar : Nouveautés de MongoDB 3.2
Webinar : Nouveautés de MongoDB 3.2
 

En vedette

Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013
 Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013 Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013
Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013it-people
 
Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...
Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...
Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...it-people
 
CQL3 and Data Modeling 101 with Apache Cassandra
CQL3 and Data Modeling 101 with Apache CassandraCQL3 and Data Modeling 101 with Apache Cassandra
CQL3 and Data Modeling 101 with Apache CassandraChris McEniry
 
Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...
Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...
Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...it-people
 
Иван Бурмистров "Строго ориентированная последовательность временных событий"...
Иван Бурмистров "Строго ориентированная последовательность временных событий"...Иван Бурмистров "Строго ориентированная последовательность временных событий"...
Иван Бурмистров "Строго ориентированная последовательность временных событий"...it-people
 
Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013
Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013
Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013it-people
 
Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...
Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...
Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...it-people
 
Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...
Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...
Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...it-people
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013it-people
 
CodeFest 2013. Анастасьев О. — Класс!ная Cassandra
CodeFest 2013. Анастасьев О. — Класс!ная CassandraCodeFest 2013. Анастасьев О. — Класс!ная Cassandra
CodeFest 2013. Анастасьев О. — Класс!ная CassandraCodeFest
 
Apache Cassandra, part 2 – data model example, machinery
Apache Cassandra, part 2 – data model example, machineryApache Cassandra, part 2 – data model example, machinery
Apache Cassandra, part 2 – data model example, machineryAndrey Lomakin
 
Java Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVMJava Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVModnoklassniki.ru
 
C*ollege Credit: Data Modeling for Apache Cassandra
C*ollege Credit: Data Modeling for Apache CassandraC*ollege Credit: Data Modeling for Apache Cassandra
C*ollege Credit: Data Modeling for Apache CassandraDataStax
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandraodnoklassniki.ru
 
Александр Сабинин "Организация динамической циклической очереди задач для ска...
Александр Сабинин "Организация динамической циклической очереди задач для ска...Александр Сабинин "Организация динамической циклической очереди задач для ска...
Александр Сабинин "Организация динамической циклической очереди задач для ска...it-people
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.odnoklassniki.ru
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Alexander Mezhov
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...odnoklassniki.ru
 

En vedette (20)

Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013
 Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013 Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013
Евгений Тихонов "Введение в Cassandra". Выступление на Cassandrd conf 2013
 
Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...
Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...
Максим Сычев и Александр Коковин "Как мы переезжали на Cassandra". Выступлени...
 
CQL3 and Data Modeling 101 with Apache Cassandra
CQL3 and Data Modeling 101 with Apache CassandraCQL3 and Data Modeling 101 with Apache Cassandra
CQL3 and Data Modeling 101 with Apache Cassandra
 
Javantura v2 - Data modeling with Apapche Cassandra - Marko Švaljek
Javantura v2 - Data modeling with Apapche Cassandra - Marko ŠvaljekJavantura v2 - Data modeling with Apapche Cassandra - Marko Švaljek
Javantura v2 - Data modeling with Apapche Cassandra - Marko Švaljek
 
Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...
Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...
Jonathan Ellis "Apache Cassandra 2.0 and 2.1". Выступление на Cassandra conf ...
 
Иван Бурмистров "Строго ориентированная последовательность временных событий"...
Иван Бурмистров "Строго ориентированная последовательность временных событий"...Иван Бурмистров "Строго ориентированная последовательность временных событий"...
Иван Бурмистров "Строго ориентированная последовательность временных событий"...
 
Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013
Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013
Александр Соловьев "Cassandra in-e commerce". Выступление на Cassandra conf 2013
 
Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...
Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...
Aleksey Yeschenko "Моделирование данных с помощью CQL3". Выступление на Cassa...
 
Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...
Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...
Ольга Соболева и Кирилл Иванов "Обработка транзакций на примере телекоммуника...
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
 
CodeFest 2013. Анастасьев О. — Класс!ная Cassandra
CodeFest 2013. Анастасьев О. — Класс!ная CassandraCodeFest 2013. Анастасьев О. — Класс!ная Cassandra
CodeFest 2013. Анастасьев О. — Класс!ная Cassandra
 
Apache Cassandra, part 2 – data model example, machinery
Apache Cassandra, part 2 – data model example, machineryApache Cassandra, part 2 – data model example, machinery
Apache Cassandra, part 2 – data model example, machinery
 
Java Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVMJava Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVM
 
C*ollege Credit: Data Modeling for Apache Cassandra
C*ollege Credit: Data Modeling for Apache CassandraC*ollege Credit: Data Modeling for Apache Cassandra
C*ollege Credit: Data Modeling for Apache Cassandra
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandra
 
Александр Сабинин "Организация динамической циклической очереди задач для ска...
Александр Сабинин "Организация динамической циклической очереди задач для ска...Александр Сабинин "Организация динамической циклической очереди задач для ска...
Александр Сабинин "Организация динамической циклической очереди задач для ска...
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)
 
Cassandra 101
Cassandra 101Cassandra 101
Cassandra 101
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 

Similaire à Евгений Курпилянский "Индексирование поверх Cassandra". Выступление на Cassandra conf 2013

Intro to Core Data
Intro to Core DataIntro to Core Data
Intro to Core DataMake School
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBJustin Smestad
 
5 Ways to Use Spark to Enrich your Cassandra Environment
5 Ways to Use Spark to Enrich your Cassandra Environment5 Ways to Use Spark to Enrich your Cassandra Environment
5 Ways to Use Spark to Enrich your Cassandra EnvironmentJim Hatcher
 
Getting started with Elasticsearch in .net
Getting started with Elasticsearch in .netGetting started with Elasticsearch in .net
Getting started with Elasticsearch in .netIsmaeel Enjreny
 
Getting Started With Elasticsearch In .NET
Getting Started With Elasticsearch In .NETGetting Started With Elasticsearch In .NET
Getting Started With Elasticsearch In .NETAhmed Abd Ellatif
 
Mongo Bb - NoSQL tutorial
Mongo Bb - NoSQL tutorialMongo Bb - NoSQL tutorial
Mongo Bb - NoSQL tutorialMohan Rathour
 
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search EngineElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search EngineDaniel N
 
Samedi SQL Québec - La plateforme data de Azure
Samedi SQL Québec - La plateforme data de AzureSamedi SQL Québec - La plateforme data de Azure
Samedi SQL Québec - La plateforme data de AzureMSDEVMTL
 
Connecting to a REST API in iOS
Connecting to a REST API in iOSConnecting to a REST API in iOS
Connecting to a REST API in iOSgillygize
 
Core data in Swfit
Core data in SwfitCore data in Swfit
Core data in Swfitallanh0526
 
171_74_216_Module_5-Non_relational_database_-mongodb.pptx
171_74_216_Module_5-Non_relational_database_-mongodb.pptx171_74_216_Module_5-Non_relational_database_-mongodb.pptx
171_74_216_Module_5-Non_relational_database_-mongodb.pptxsukrithlal008
 
Entity Framework Database and Code First
Entity Framework Database and Code FirstEntity Framework Database and Code First
Entity Framework Database and Code FirstJames Johnson
 
Cassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A ComparisonCassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A Comparisonshsedghi
 
Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with railsTom Z Zeng
 

Similaire à Евгений Курпилянский "Индексирование поверх Cassandra". Выступление на Cassandra conf 2013 (20)

Data perisistence in iOS
Data perisistence in iOSData perisistence in iOS
Data perisistence in iOS
 
Data perisistance i_os
Data perisistance i_osData perisistance i_os
Data perisistance i_os
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Intro to Core Data
Intro to Core DataIntro to Core Data
Intro to Core Data
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
5 Ways to Use Spark to Enrich your Cassandra Environment
5 Ways to Use Spark to Enrich your Cassandra Environment5 Ways to Use Spark to Enrich your Cassandra Environment
5 Ways to Use Spark to Enrich your Cassandra Environment
 
Getting started with Elasticsearch in .net
Getting started with Elasticsearch in .netGetting started with Elasticsearch in .net
Getting started with Elasticsearch in .net
 
Getting Started With Elasticsearch In .NET
Getting Started With Elasticsearch In .NETGetting Started With Elasticsearch In .NET
Getting Started With Elasticsearch In .NET
 
Mongo Bb - NoSQL tutorial
Mongo Bb - NoSQL tutorialMongo Bb - NoSQL tutorial
Mongo Bb - NoSQL tutorial
 
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search EngineElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
 
Samedi SQL Québec - La plateforme data de Azure
Samedi SQL Québec - La plateforme data de AzureSamedi SQL Québec - La plateforme data de Azure
Samedi SQL Québec - La plateforme data de Azure
 
Connecting to a REST API in iOS
Connecting to a REST API in iOSConnecting to a REST API in iOS
Connecting to a REST API in iOS
 
Core data in Swfit
Core data in SwfitCore data in Swfit
Core data in Swfit
 
Spark sql
Spark sqlSpark sql
Spark sql
 
171_74_216_Module_5-Non_relational_database_-mongodb.pptx
171_74_216_Module_5-Non_relational_database_-mongodb.pptx171_74_216_Module_5-Non_relational_database_-mongodb.pptx
171_74_216_Module_5-Non_relational_database_-mongodb.pptx
 
La sql
La sqlLa sql
La sql
 
Entity Framework Database and Code First
Entity Framework Database and Code FirstEntity Framework Database and Code First
Entity Framework Database and Code First
 
Cassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A ComparisonCassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A Comparison
 
Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with rails
 
Rails meets no sql
Rails meets no sqlRails meets no sql
Rails meets no sql
 

Plus de it-people

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Coit-people
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghubit-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrainsit-people
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologiesit-people
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндексit-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalrit-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАНit-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНСit-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn Systemit-people
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologiesit-people
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндексit-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...it-people
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognicianit-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...it-people
 

Plus de it-people (20)

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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 Takeoffsammart93
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 

Dernier (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Евгений Курпилянский "Индексирование поверх Cassandra". Выступление на Cassandra conf 2013

  • 1. Indexing Cassandra data in SQL-storage Indexing Cassandra data in SQL-storage Kurpilyansky Eugene SKB Kontur December 9th, 2013
  • 2. Indexing Cassandra data in SQL-storage What do we want? Suppose, we want to store objects of dierent types in Cassandra. Any object has a primary string key. Cassandra is well-suited for using it as key-value storage. But we usually want to search among all objects of same type by some criterion. Results of searching must be consistent and reect current state of database. How can we implement storage which satises these requirements?
  • 3. Indexing Cassandra data in SQL-storage What do we want? Suppose, we want to store objects of dierent types in Cassandra. Any object has a primary string key. Cassandra is well-suited for using it as key-value storage. But we usually want to search among all objects of same type by some criterion. Results of searching must be consistent and reect current state of database. How can we implement storage which satises these requirements?
  • 4. Indexing Cassandra data in SQL-storage What do we want? Suppose, we want to store objects of dierent types in Cassandra. Any object has a primary string key. Cassandra is well-suited for using it as key-value storage. But we usually want to search among all objects of same type by some criterion. Results of searching must be consistent and reect current state of database. How can we implement storage which satises these requirements?
  • 5. Indexing Cassandra data in SQL-storage What do we want? Suppose, we want to store objects of dierent types in Cassandra. Any object has a primary string key. Cassandra is well-suited for using it as key-value storage. But we usually want to search among all objects of same type by some criterion. Results of searching must be consistent and reect current state of database. How can we implement storage which satises these requirements?
  • 6. Indexing Cassandra data in SQL-storage What do we want? Suppose, we want to store objects of dierent types in Cassandra. Any object has a primary string key. Cassandra is well-suited for using it as key-value storage. But we usually want to search among all objects of same type by some criterion. Results of searching must be consistent and reect current state of database. How can we implement storage which satises these requirements?
  • 7. Indexing Cassandra data in SQL-storage Using native Cassandra indexes We can use native Cassandra indexes. Advantages There is no need to support additional storage. Disadvantages Every custom query may require new CF-structure for eective searching. SQL-indexes are more ecient than Cassandra's indexes. There exist a lot of complex indexes (e.g. full-text search indexing).
  • 8. Indexing Cassandra data in SQL-storage Using native Cassandra indexes We can use native Cassandra indexes. Advantages There is no need to support additional storage. Disadvantages Every custom query may require new CF-structure for eective searching. SQL-indexes are more ecient than Cassandra's indexes. There exist a lot of complex indexes (e.g. full-text search indexing).
  • 9. Indexing Cassandra data in SQL-storage Using native Cassandra indexes We can use native Cassandra indexes. Advantages There is no need to support additional storage. Disadvantages Every custom query may require new CF-structure for eective searching. SQL-indexes are more ecient than Cassandra's indexes. There exist a lot of complex indexes (e.g. full-text search indexing).
  • 10. Indexing Cassandra data in SQL-storage Using native Cassandra indexes We can use native Cassandra indexes. Advantages There is no need to support additional storage. Disadvantages Every custom query may require new CF-structure for eective searching. SQL-indexes are more ecient than Cassandra's indexes. There exist a lot of complex indexes (e.g. full-text search indexing).
  • 11. Indexing Cassandra data in SQL-storage Using native Cassandra indexes We can use native Cassandra indexes. Advantages There is no need to support additional storage. Disadvantages Every custom query may require new CF-structure for eective searching. SQL-indexes are more ecient than Cassandra's indexes. There exist a lot of complex indexes (e.g. full-text search indexing).
  • 12. Indexing Cassandra data in SQL-storage Using synchronization with SQL-storage Main idea Main idea Run IndexService application which is synchronizing data in SQL-storage with data in Cassandra (constantly, in background thread). To perform a search we should make a query to IndexService which will return the search result after nishing SQL-storage synchronization process.
  • 13. Indexing Cassandra data in SQL-storage Using synchronization with SQL-storage Main idea Main idea Run IndexService application which is synchronizing data in SQL-storage with data in Cassandra (constantly, in background thread). To perform a search we should make a query to IndexService which will return the search result after nishing SQL-storage synchronization process.
  • 14. Indexing Cassandra data in SQL-storage Using synchronization with SQL-storage Implementation of EventLog Create event log One event per one write-request or delete-request. Event log sorted by time of event.
  • 15. Indexing Cassandra data in SQL-storage Using synchronization with SQL-storage Implementation of EventLog Create event log One event per one write-request or delete-request. Event log sorted by time of event.
  • 16. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of EventLog Event string EventId; long Timestamp; string ObjectId; interface IEventLog void AddEvent(Event event); IEnumerableEvent GetEvents(long fromTicks); New implementation of IObjectStorage Before writing or deleting objects call method IEventLog.AddEvent.
  • 17. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of EventLog Event string EventId; long Timestamp; string ObjectId; interface IEventLog void AddEvent(Event event); IEnumerableEvent GetEvents(long fromTicks); New implementation of IObjectStorage Before writing or deleting objects call method IEventLog.AddEvent.
  • 18. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of EventLog Event string EventId; long Timestamp; string ObjectId; interface IEventLog void AddEvent(Event event); IEnumerableEvent GetEvents(long fromTicks); New implementation of IObjectStorage Before writing or deleting objects call method IEventLog.AddEvent.
  • 19. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of EventLog EventLog.AddEvent(Event event) Create column: ColumnName = event.Timestamp + ':' + event.EventId ColumnValue = event EventLog.GetEvents(long fromTicks) Execute get_slice from exclusive column for one row.
  • 20. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of EventLog EventLog.AddEvent(Event event) Create column: ColumnName = event.Timestamp + ':' + event.EventId ColumnValue = event EventLog.GetEvents(long fromTicks) Execute get_slice from exclusive column for one row. We should split all event log into rows using PartitionInterval to limit size of rows. PartitionInterval is some constant period of time (e.g. one hour, or six minutes).
  • 21. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of EventLog We should split all event log into rows using PartitionInterval to limit size of rows. PartitionInterval is some constant period of time (e.g. one hour, or six minutes). EventLog.AddEvent(Event event) Create column: RowKey = event.Timestamp / PartitionInterval.Ticks ColumnName = event.Timestamp + ':' + event.EventId ColumnValue = event EventLog.GetEvents(long fromTicks) Execute get_slice from exclusive column for one or more rows.
  • 22. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService IndexService It has a local SQL-storage (one storage per one service replica). There is one SQL-table per one type of object. There is one specic SQL-table for storing times of last synchronization for each type of object. There is one background thread per one type of object, which is reading event log and updating SQL-storage. For executing incoming SQL-query, we can use data from SQL-storage and a little range of events.
  • 23. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService IndexService It has a local SQL-storage (one storage per one service replica). There is one SQL-table per one type of object. There is one specic SQL-table for storing times of last synchronization for each type of object. There is one background thread per one type of object, which is reading event log and updating SQL-storage. For executing incoming SQL-query, we can use data from SQL-storage and a little range of events.
  • 24. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService IndexService It has a local SQL-storage (one storage per one service replica). There is one SQL-table per one type of object. There is one specic SQL-table for storing times of last synchronization for each type of object. There is one background thread per one type of object, which is reading event log and updating SQL-storage. For executing incoming SQL-query, we can use data from SQL-storage and a little range of events.
  • 25. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService IndexService It has a local SQL-storage (one storage per one service replica). There is one SQL-table per one type of object. There is one specic SQL-table for storing times of last synchronization for each type of object. There is one background thread per one type of object, which is reading event log and updating SQL-storage. For executing incoming SQL-query, we can use data from SQL-storage and a little range of events.
  • 26. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService IndexService It has a local SQL-storage (one storage per one service replica). There is one SQL-table per one type of object. There is one specic SQL-table for storing times of last synchronization for each type of object. There is one background thread per one type of object, which is reading event log and updating SQL-storage. For executing incoming SQL-query, we can use data from SQL-storage and a little range of events.
  • 27. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Periodic synchronization action Set startSynchronizationTime = NowTicks. Find all events which should be processed. Process these events: update SQL-storage and keep unprocessed events (they should be processed on the next iteration). Update time of last synchronization to startSynchronizationTime in SQL-storage.
  • 28. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Periodic synchronization action Set startSynchronizationTime = NowTicks. Find all events which should be processed. Process these events: update SQL-storage and keep unprocessed events (they should be processed on the next iteration). Update time of last synchronization to startSynchronizationTime in SQL-storage.
  • 29. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Periodic synchronization action Set startSynchronizationTime = NowTicks. Find all events which should be processed. Process these events: update SQL-storage and keep unprocessed events (they should be processed on the next iteration). Update time of last synchronization to startSynchronizationTime in SQL-storage.
  • 30. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Periodic synchronization action Set startSynchronizationTime = NowTicks. Find all events which should be processed. Process these events: update SQL-storage and keep unprocessed events (they should be processed on the next iteration). Update time of last synchronization to startSynchronizationTime in SQL-storage.
  • 31. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService ProcessEvents(Event[] events) This function actualizes values of related objects in SQL-storage. Remember, that we update object after creating an event. So, we can not process some of events at the moment, because correspoding object isn't updated yet.
  • 32. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService ProcessEvents(Event[] events) This function actualizes values of related objects in SQL-storage. Remember, that we update object after creating an event. So, we can not process some of events at the moment, because correspoding object isn't updated yet.
  • 33. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Event[] ProcessEvents(Event[] events) This function actualizes values of related objects in SQL-storage and returns events, which have not been processed. How will this function be implemented? For every event we should analyze corresponding objects from both Cassandra and SQL-storage.
  • 34. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Event[] ProcessEvents(Event[] events) This function actualizes values of related objects in SQL-storage and returns events, which have not been processed. How will this function be implemented? For every event we should analyze corresponding objects from both Cassandra and SQL-storage.
  • 35. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Event[] ProcessEvents(Event[] events) This function actualizes values of related objects in SQL-storage and returns events, which have not been processed. How will this function be implemented? For every event we should analyze corresponding objects from both Cassandra and SQL-storage.
  • 36. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 1 event = {Timestamp: 2008} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} What should we do?
  • 37. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 1 event = {Timestamp: 2008} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} Write cassObj in SQL-storage and mark event as processed.
  • 38. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 1 event = {Timestamp: 2008} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} Write cassObj in SQL-storage and mark event as processed. Example 2 event = {Timestamp: 2012} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} What should we do?
  • 39. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 1 event = {Timestamp: 2008} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} Write cassObj in SQL-storage and mark event as processed. Example 2 event = {Timestamp: 2012} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} Timestamp of event is greater than timestamp of cassObj. Probably, it needs to wait for updating of object.
  • 40. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 1 event = {Timestamp: 2008} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} Write cassObj in SQL-storage and mark event as processed. Example 2 event = {Timestamp: 2012} cassObj = {Timestamp: 2008, School: 'USU'} sqlObj = {Timestamp: 2005, School: 'AESÑ USU'} Timestamp of event is greater than timestamp of cassObj. Probably, it needs to wait for updating of object. Write cassObj in SQL-storage and mark event as unprocessed.
  • 41. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 3 event = {Timestamp: 1997} cassObj is missing sqlObj is missing What should we do?
  • 42. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 3 event = {Timestamp: 1997} cassObj is missing sqlObj is missing Probably, that event corresponds to the creation of object.
  • 43. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 3 event = {Timestamp: 1997} cassObj is missing sqlObj is missing Probably, that event corresponds to the creation of object. Mark event as unprocessed.
  • 44. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 3 event = {Timestamp: 1997} cassObj is missing sqlObj is missing Probably, that event corresponds to the creation of object. Mark event as unprocessed. Example 4 event = {Timestamp: 2017} cassObj is missing sqlObj = {Timestamp: 2012, School: 'UFU'} What should we do?
  • 45. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 3 event = {Timestamp: 1997} cassObj is missing sqlObj is missing Probably, that event corresponds to the creation of object. Mark event as unprocessed. Example 4 event = {Timestamp: 2017} cassObj is missing sqlObj = {Timestamp: 2012, School: 'UFU'} Two cases are possible: 1 That event corresponds to the deletion of object. 2 That event corresponds to the creation of object. sqlObj is not missing, because there were two operationsin a row: delete and create.
  • 46. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Example 4 event = {Timestamp: 2017} cassObj is missing sqlObj = {Timestamp: 2012, School: 'UFU'} Two cases are possible: 1 That event corresponds to the deletion of object. 2 That event corresponds to the creation of object. sqlObj is not missing, because there were two operationsin a row: delete and create. Delete sqlObj from SQL-storage and mark event as unprocessed.
  • 47. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Event[] ProcessEvents(Event[] events) Read objects, which occured in these events, from Cassandra and SQL-storage (some of them can be missing). For each (event, cassObj, sqlObj) do If cassObj is not missing cassObj in SQL-storage event.Timestamp = cassObj.Timestamp Save If then mark else mark event as processed; event as unprocessed. else (i.e. cassObj is missing) sqlObj from SQL-storage event as unprocessed. Delete Mark if it's not missing. Return events which has been marked as unprocessed.
  • 48. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Periodic synchronization action Set startSynchronizationTime = NowTicks. Find all events which should be processed. Process these events: update SQL-storage and keep unprocessed events (they should be processed on the next iteration). Update time of last synchronization to startSynchronizationTime in SQL-storage.
  • 49. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 50. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 51. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 52. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 53. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 54. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 55. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService What events should we use as arguments in ProcessEvents function? Of course, all unprocessed events from previous iteration. Also all new events, i.e. IEventLog.GetEvents(fromTicks). What is fromTicks? fromTicks = lastSynchronizationTime? No. Unfortunately, any operation with Cassandra can be executed for a long time. This time is limited by writeTimeout = attemptsCount · connectionTimeout. We should make undertow back, otherwise we can lose some events. fromTicks = lastSynchronizationTime - writeTimeout
  • 56. Indexing Cassandra data in SQL-storage Synchronizing SQL-storage with Cassandra Implementation of IndexService Executing search request
  • 57. Indexing Cassandra data in SQL-storage Advantages. Scalability. Availability. Fault tolerance. Sharding.
  • 58. Indexing Cassandra data in SQL-storage Advantages. Scalability. Availability. Fault tolerance. Sharding.
  • 59. Indexing Cassandra data in SQL-storage Questions Thank you for your attention. Any questions?