Skip to main content

Posts

Table Schema

When using SQL database, a very important aspect is table schema. Presently for comment system the table schema has to support association of graph with comments, comments association with nodes and edges. Also later we came up with the idea of pinned comments where the user can pin some comments and revisit them later. So the table schema was designed as below: Comment table for storing comments. CommentToNode table for association between nodes and comments. CommentToEdge table for association between nodes and comments. PinComment table for association between users and their pinned comments.  Comment table schema is as follows: Column Name Data Type Description message string Comment message owner_email string Email Id of user who created the comment. graph_id Integer Id of the graph on which the comment is being created parent_comment_id Integer If the comment is the parent then it’s value is NULL otherwise comment is a repl...
Recent posts

Comment system Architecture

Sockets A socket is one endpoint of a two-way communication link between two programs running on the network. It allows real time, bidirectional communication between the web client and server. This allows for logged in users to see comments in real time without refreshing the page in a similar way as in Google docs . Architecture  The GraphSpace notification system ( pull request ) sends users notifications when certain operations (such as graph deletion or graph creation) have been completed. In practice, many users (such as those in a large group) may receive these notifications, which involves creating database entries for each user. If we attempt to do all of these operations from the perspective of the user performing them. Thus, we elected to use Kafka (a messaging queue) to enable an asynchronous notification system. In the notification system architecture the notification has to be created only after a successful database operation of creating/deleting graph, ...

Websockets in Django

"WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011, and the WebSocket API in Web IDL is being standardized by the W3C." WebSockets are used for streaming messages. To implement real-time notification we need to stream messages from the server to the client without a refresh or making an HTTP request from the client. Hence websockets. We will be implementing sockets in Django using Django Channels. Channels is a project that takes Django and extends its abilities beyond HTTP - to handle WebSockets, chat protocols, IoT protocols, and more.  But WSGI server does not support websockets(present gateway interface used by graphspace). We will be using Daphne , a server specially designed for channels. It's pretty easy to deploy channels on Daphne. For websockets we will be using ASGI as the gateway interface and Daphne as t...

Project Introduction

Comment System for GraphSpace Organization : National Resource for Network Biology (NRNB) GraphSpace is an user-friendly web-based platform that collaborating research groups can utilize for storage, interaction, and network sharing. A GraphSpace user can import graphs created in Cytoscape , upload them through a REST API, interact with them by customizing and saving layouts, share them within and between groups of collaborators, search for different graphs, and organize them using tags. These functions are enabled through GraphSpace’s comprehensive REST API, which allows users to communicate. Several research groups and people using GraphSpace would like not only to visualize the graph but also discuss about different nodes, edges and subgraphs present in the graph. Effective discussion about the graphs can be promoted with the help of comments. The aim of this project is to implement a real-time system that will allow users to comment on graphs and discuss ideas with each...