Hello Kalyan,

> On Apr 27, 2017, at 9:14 PM, Kalyan Kumar Kalvagadda <[email protected]> 
> wrote:
> 
> Hello all,
> 
> As part of SENTRY-1726, I'm adding new table to store notification-id. HMS
> follower just needs the the latest notification-id that sentry has
> processed.
> All HMS follower needs is the latest notification. As we need not store
> older notification-id's, I defined the table to hold only one record so
> that we can avoid inserting more records in the table and the application
> should just update the existing record.

I think it is better to store new notification ID as a new row .This will avoid 
holding a row lock for read-edify-write operation. The dwnside that we need to 
use MAX(), but given that tis is the primary key, MAX() should be an index scan 
rather then a table scan. And yes, we do need to prune old rows, we should be 
able to do that in the background to keep the table size small.

> 
> 
> CREATE TABLE `SENTRY_LAST_NOTIFICATION_ID`
> (
>    `NOTIFICATION_ID` BIGINT NOT NULL,
>    `RESTRICTION` VARCHAR(15) NOT NULL DEFAULT 'singleton',
>    CONSTRAINT `SENTRY_NOTIFICATION_PK` PRIMARY KEY (`RESTRICTION`)
> )ENGINE=INNODB;
> 
> 
> Application just needs to insert/update the NOTIFICATION_ID. Once we
> insert for the fist time, it is update only.
> 
> On the other hand, If we have NOTIFICATION_ID as primary key and keep
> on inserting NOTIFICATION_ID's into
> 
> the table. we have to use MAX(NOTIFICATION_ID) every time we need the
> notification id. Additionally, we need to build logic to cleanup older
> entries.
> 
> 
> You can refer to review board for complete change set.
> 
> https://reviews.apache.org/r/58808/
> 
> 
> -Kalyan

Reply via email to