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
