cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "@Nandan@" <nandanpriyadarshi...@gmail.com>
Subject Re: Reg:- Cassandra Data modelling for Search
Date Mon, 12 Jun 2017 09:54:59 GMT
So In short we have to go with one single table as videos and put primary
key as videoid uuid.
But then how can we able to handle multiple actor name and producer name. ?

On Mon, Jun 12, 2017 at 5:51 PM, Eduardo Alonso <eduardoalonso@stratio.com>
wrote:

> Yes, you are right.
>
> Table denormalization is useful just when you have unique primary keys,
> not your case.
> Denormalized tables are only different in its primary key, every
> denormalized table contains all the data (it just change how it is
> structured). So, if you need to index it, do it with just one table (the
> one you showed us with videoid as the primary key is ok).
>
> Solr, Elastic and cassandra-lucene-index are both based on Lucene and all
> of them fulfill all your needs.
>
> Solr (in DSE) and cassandra-lucene-index
> <https://github.com/stratio/cassandra-lucene-index> are very well
> integrated with cassandra using its secondary index interface. If you
> choose elastic search you will need to code the integration (write mutex,
> both cluster synchronization (imagine something written in cassandra but
> failed to write in elastic))
>
> I know i am not the most suitable to recommend you to use our product
> cassandra-lucene-index <https://github.com/stratio/cassandra-lucene-index>
> but it is open source, just take a look.
>
> Eduardo Alonso
> Vía de las dos Castillas, 33, Ática 4, 3ª Planta
> 28224 Pozuelo de Alarcón, Madrid
> Tel: +34 91 828 6473 <+34%20918%2028%2064%2073> // www.stratio.com // *@stratiobd
> <https://twitter.com/StratioBD>*
>
> 2017-06-12 11:18 GMT+02:00 @Nandan@ <nandanpriyadarshi298@gmail.com>:
>
>> Hi Eduardo,
>>
>> And As we are trying to build an advanced search functionality in which
>> we can able to do partial search based on actor, producer, director, etc.
>> columns.
>> So if we do denormalization of tables then we have to create tables such
>> as below :-
>> video_by_actor
>> video_by_producer
>> video_by_director
>> video_by_date
>> etc..
>> By using denormalized, Cassandra only allows us to do equality search,
>> but for implementing Partial search we need to implement solr on all above
>> tables.
>>
>> This is my thinking, but I think this will be not correct way to
>> implement Apache Solr on all tables.
>>
>> On Mon, Jun 12, 2017 at 5:11 PM, @Nandan@ <nandanpriyadarshi298@gmail.com
>> > wrote:
>>
>>> Hi Edurado,
>>>
>>> As you mentioned queries 1-6 ,
>>> In this condition, we have to proceed with a table like as below :-
>>> create table videos (
>>> videoid uuid primary key,
>>> title text,
>>> actor text,
>>> producer text,
>>> release_date timestamp,
>>> description text,
>>> music text,
>>> etc...
>>> );
>>> This table will help to store video datas based on PK videoid and will
>>> give uniqeness due to uuid.
>>> But as we know , in one movie there are multiple actor, multiple
>>> producer, multiple music worked, So how can we store all these.. Only one
>>> option will left as to use collection type columns.
>>>
>>>
>>> On Mon, Jun 12, 2017 at 4:59 PM, Eduardo Alonso <
>>> eduardoalonso@stratio.com> wrote:
>>>
>>>> TLDR shouldBe *PD
>>>>
>>>> Eduardo Alonso
>>>> Vía de las dos Castillas, 33, Ática 4, 3ª Planta
>>>> 28224 Pozuelo de Alarcón, Madrid
>>>> Tel: +34 91 828 6473 <+34%20918%2028%2064%2073> // www.stratio.com
// *@stratiobd
>>>> <https://twitter.com/StratioBD>*
>>>>
>>>> 2017-06-12 10:58 GMT+02:00 Eduardo Alonso <eduardoalonso@stratio.com>:
>>>>
>>>>> Hi Nandan:
>>>>>
>>>>> So, your system must provide these queries:
>>>>>
>>>>> 1 - SELECT video FROM ... WHERE actor = '...';
>>>>> 2 - SELECT video FROM ... WHERE producer = '...';
>>>>> 3 - SELECT video FROM ... WHERE music = '...';
>>>>> 4 - SELECT video FROM ... WHERE actor = '...' AND producer ='...';
>>>>> 5 - SELECT video FROM ... WHERE actor = '...' AND music = '...';
>>>>> 6 - SELECT video WHERE title CONTAINS 'Harry';
>>>>>
>>>>>
>>>>> For queries 1-5 you can get them with just cassandra, denormalizing
>>>>> tables just the way your mentioned but without solr, just cassandra
>>>>> (Indeed, just for equality clauses)
>>>>>
>>>>> video_by_actor;
>>>>> video_by_producer;
>>>>> video_by_music;
>>>>> video_by_actor_and_producer;
>>>>> video_by_actor_and_music;
>>>>>
>>>>> For queries number 6 you need a search engine.
>>>>>
>>>>> SOL
>>>>> ElasticSearch
>>>>> cassandra-lucene-index
>>>>> <https://github.com/stratio/cassandra-lucene-index>
>>>>> SASI
>>>>> <http://docs.datastax.com/en/dse/5.1/cql/cql/cql_reference/cql_commands/cqlCreateCustomIndex.html>
>>>>>
>>>>> I think, just for your query,  the easiest way to get it is to build
a
>>>>> SASI index.
>>>>> TLDR: I work for stratio in cassandra-lucene-index but for your basic
>>>>> query (only one dimension), SASI indexes will work for you.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Eduardo Alonso
>>>>> Vía de las dos Castillas, 33, Ática 4, 3ª Planta
>>>>> 28224 Pozuelo de Alarcón, Madrid
>>>>> Tel: +34 91 828 6473 <+34%20918%2028%2064%2073> // www.stratio.com
// *@stratiobd
>>>>> <https://twitter.com/StratioBD>*
>>>>>
>>>>> 2017-06-12 9:50 GMT+02:00 @Nandan@ <nandanpriyadarshi298@gmail.com>:
>>>>>
>>>>>> But Condition is , I am working with Apache Cassandra Database in
>>>>>> which I have to store my data into Cassandra and then have to implement
>>>>>> partial search capability.
>>>>>> If we need to search based on full search  primary key, then it
>>>>>> really best and easy to work with Cassandra , but in case of flexible
>>>>>> search , I am getting confused.
>>>>>>
>>>>>>
>>>>>> On Mon, Jun 12, 2017 at 3:47 PM, Oskar Kjellin <
>>>>>> oskar.kjellin@gmail.com> wrote:
>>>>>>
>>>>>>> I haven't run solr with Cassandra myself. I just meant to run
>>>>>>> elasticsearch as a completely separate service and write there
as well.
>>>>>>>
>>>>>>> On 12 Jun 2017, at 09:45, @Nandan@ <nandanpriyadarshi298@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Do you mean to use Elastic Search with Cassandra?
>>>>>>> Even I am thinking to use Apache Solr With Cassandra.
>>>>>>> In that case I have to create distributed tables such as:-
>>>>>>> 1) video_by_title, video_by_actor, video_by_year  etc..
>>>>>>> 2) After creating Tables , will have to configure solr core on
all
>>>>>>> tables.
>>>>>>>
>>>>>>> Is it like this ?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jun 12, 2017 at 3:19 PM, Oskar Kjellin <
>>>>>>> oskar.kjellin@gmail.com> wrote:
>>>>>>>
>>>>>>>> Why not elasticsearch for this use case? It will make your
life
>>>>>>>> much simpler
>>>>>>>>
>>>>>>>> > On 12 Jun 2017, at 04:40, @Nandan@ <nandanpriyadarshi298@gmail.co
>>>>>>>> m> wrote:
>>>>>>>> >
>>>>>>>> > Hi,
>>>>>>>> >
>>>>>>>> > Currently, I am working on data modeling for Video Company
in
>>>>>>>> which we have different types of users as well as different
user
>>>>>>>> functionality.
>>>>>>>> > But currently, my concern is about Search video module
based on
>>>>>>>> different fields.
>>>>>>>> >
>>>>>>>> > Query patterns are as below:-
>>>>>>>> > 1) Select video by actor.
>>>>>>>> > 2) select video by producer.
>>>>>>>> > 3) select video by music.
>>>>>>>> > 4) select video by actor and producer.
>>>>>>>> > 5) select video by actor and music.
>>>>>>>> >
>>>>>>>> > Note: - In short, We want to establish an advanced search
module
>>>>>>>> by which we can search by anyway and get the desired results.
>>>>>>>> >
>>>>>>>> > During a search , we need partial search also such that
if any
>>>>>>>> user can search "Harry" title, then we are able to give them
result as all
>>>>>>>> videos whose
>>>>>>>> >  title contains "Harry" at any location.
>>>>>>>> >
>>>>>>>> > As per my ideas, I have to create separate tables such
as
>>>>>>>> video_by_actor, video_by_producer etc.. and implement solr
query on all
>>>>>>>> tables. Otherwise,
>>>>>>>> > is there any others way by which we can implement this
search
>>>>>>>> module effectively.
>>>>>>>> >
>>>>>>>> > Please suggest.
>>>>>>>> >
>>>>>>>> > Best regards,
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message