SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
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?

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch

Евгений Тихонов "Введение в 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
 

Andere mochten auch (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 данные в Одноклассниках. Роман Ан...
 

Ähnlich wie Евгений Курпилянский "Индексирование поверх 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 .NETAhmed Abd Ellatif
 
Getting started with Elasticsearch in .net
Getting started with Elasticsearch in .netGetting started with Elasticsearch in .net
Getting started with Elasticsearch in .netIsmaeel Enjreny
 
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
 

Ähnlich wie Евгений Курпилянский "Индексирование поверх 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
 

Mehr von 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
 

Mehr von 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
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

Kürzlich hochgeladen

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Kürzlich hochgeladen (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Евгений Курпилянский "Индексирование поверх 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?