Nelson Ospina Taller 2 hbase

Taller entregable Descripción La red social Twitter puede ser entendida como una comunidad de usuarios que siguen y son

Views 87 Downloads 4 File size 254KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Taller entregable Descripción La red social Twitter puede ser entendida como una comunidad de usuarios que siguen y son seguidos por otros usuarios. La relación de seguimiento no es simétrica, es decir, si un usuario A sigue a un usuario B , no implica que el usuario B siga al usuario A . Como parte de su sistema, Twitter Inc. permite al usuario seguir o dejar de seguir usuarios, consultar la lista de usuarios que sigue, consultar la lista de usuarios que lo siguen . Últimamente Twitter está contratando personal experto para mejorar su sistema de base de datos y como parte del proceso de entrevista te ha encargado la tarea de diseñar un modelo de datos en Cassandra que permita de manera eficiente realizar los siguientes patrones de acceso: Lecturas:  Listar usuarios que sigue el usuario X .  Determinar si un usuario X sigue al usuario Y .  Listar los usuarios que siguen al usuario X . Escrituras:  

Usuario X sigue un nuevo usuario Y . Usuario X deja de seguir a un usuario Y .

Entregables  Diagrama del modelo de datos (Tabla indicando sus dimensiones: filas, familia de columnas y columnas). Se creará una tabla de nombre Twitter cuyo row Key corresponde al @ (nombre de un usuario) con tres familias de columnas: ‘datos’, ‘seguidor’ y ‘Siguiendo’, Cada columna (de seguidor y siguiendo) se irá nombrando con nombres de usuarios Por el nombre de usuario (key) y value = 1 (siguiendo)



Explicación de cómo se realizarían las lecturas y escrituras en términos de operaciones put, update, get, scan y delete.

Si nace un usuario en la red social simplemente se hace put ‘twitter’, ‘datos:alias’, ‘puede no ser igual a A’, de momento pues no sigue a nadie ni tampoco es seguido Crearemos los usuarios A, B, C, X, Y, con el siguiente script: put 'twitter', 'A','datos:nombre','Antonio' put 'twitter', 'B','datos:nombre','B' put 'twitter', 'C','datos:nombre','C' put 'twitter', 'X','datos:nombre','X' put 'twitter', 'Y','datos:nombre','Y'

Escrituras: 

Usuario X sigue un nuevo usuario Y.

Si X sigue a Y debo llenar dos veces la tabla incluyendo a la familia de seguidores de Y la columna X y en simultaneo en la familia de siguiendo de X a Y con el valor de control 1.

para el ejercicio haremos que Y sea seguido también por A, B, y C put 'twitter', 'A','siguiendo:Y','1' put 'twitter', 'Y','seguidor:A' ,'1' put 'twitter', 'B','siguiendo:Y','1' put 'twitter', 'Y','seguidor:B' ,'1' put 'twitter', 'C','siguiendo:Y','1' put 'twitter', 'Y','seguidor:C' ,'1'



Usuario X deja de seguir a un usuario Y .

Se debe borrar la correspondiente relación delete 'twitter', 'X','siguiendo:Y' delete 'twitter', 'Y','seguidor:Y'

Lecturas:  Listar usuarios que sigue el usuario X . X ya le borramos el seguidor pero en general solo debo consultar la familia de columnas siguiendo de una row en especifico

Lo repetimos para el A que sabemos todavía sigue a Y get 'twitter', 'A', 'siguiendo'

El usuario A sigue a Y únicamente ok  Determinar si un usuario X sigue al usuario Y . Se debe hacer la consulta de forma especifica dentro de las columnas get ‘twitter’, ‘X’, ‘siguiendo: Y’

¿En este caso ya lo habíamos borrado, intentaremos con B sigue a Y? la respuesta debe ser value:1

perfecto  Listar los usuarios que siguen al usuario X . En este momento nadie sigue a X

Es más interesante revisar Y pues a él lo siguen varios Get ‘twitter’, ‘Y’, ‘seguidor’

Como se esperaba según lo hecho en puntos anteriores al usuario Y lo siguen varios