340 likes | 351 Views
Learn how to implement RFID-based item tracking applications in Oracle DBMS using a bitmap datatype. This talk covers the background of RFID technology, introduces the concept of a bitmap datatype for efficient item tracking, and details the implementation and performance study. Discover how to leverage Oracle's bitmap index implementation and G. Antoshenkov's data compression technique for managing high volumes of item tracking information.
E N D
Supporting RFID-based Item Tracking Applications in Oracle DBMS Using a Bitmap Datatype Ying Hu, Seema Sundara, Timothy Chorma, Jagannathan Srinivasan Oracle New England Development Center One Oracle Drive, Nashua, NH 03062
Talk Outline • Background • A Bitmap Datatype • Applications • Implementation • Performance Study • Conclusions
Radio Frequency Identification • RFID uses radio frequency to automatically detect and identify individual items, which have RFID tags associated with them. • RFID technology is increasingly being used in applications such as • Asset Tracking, • Supply Chain Management, and • Retail Management.
Electronic Product Codes (EPCs) • EPC is a standard naming scheme proposed by Auto-Id Center for RFID applications. • An EPC uniquely identifies an item. It contains <Header, Manager No., Object Class, Serial No.> • The header identifies the format of the EPCtype, the next two components identify the product, whereas the last component uniquely identifies the item within the product.
Item Tracking • RFID Technology enables item tracking applications • However, there is a need for efficient mechanism for managing the high volume of item tracking information.
A Bitmap Type for Item Tracking • Key Observation: RFID Items can be efficiently tracked by tracking the groups to which an item belongs. For example • Groups of items in the same proximity: e.g. on a shelf, on a shipment • Groups of items with same property: e.g. items of a single product, items of a single product with same expiry date • Our Solution: Use a bitmap type for modeling a collection of EPCs that can occur in item tracking applications.
With EPC Collections With epc_bitmaps Example: Product Inventory
A new type to represent a collection of EPCs with a common prefix CREATE TYPE epc_bitmap_segment ( epc_length NUMBER, epc_suffix_length NUMBER, epc_prefix RAW, epc_suffix_start RAW, epc_suffix_end RAW, epc_suffix_bitmap RAW ); epc_bitmap type to represent a collection of EPCs CREATE TYPE epc_bitmap IS TABLE of epc_bitmap_segment; epc_bitmap Datatype
epc_bitmap_segment Datatype Header EPC_Manager Object_Class Serial_Number 2-bits 21-bits 17-bits 24-bits 0x4AA890001F62C160 ………………………… 0x4AA890001FA0B38E
epc_bitmap Operations • Conversion Operations epc2Bmap, bmap2Epc, and bmap2Count • Pairwise Logical Operations bmapAnd, bmapOr, bmapMinus, and bmapXor • Maintenance Operations bmapInsert and bmapDelete • Membership Testing Operation bmapExists • Comparison Operation bmapEqual
Applications: Shelf Analytics • Determine the items added to a shelf between time t1 and t2 SELECT bmap2Epc(bmapMinus(s2.item_bmap, s1.item_bmap)) FROM Shelf_Inventory s1, Shelf_Inventory s2 WHERE s1.shelf_id = <sid1> AND s1.shelf_id = s2.shelf_id AND s1.time=<t1> AND s2.time=<t2>; Shelf_Inventory
Applications: Product Recall • Identify the stores that currently have recalled items SELECT Store_id FROM Product_Inventory P WHERE bmap2Count(bmapAnd(P.Item_bmap, epc2Bmap(<recall_items>))) > 0 AND P.Product_id=<recall_product_id> AND P.Time = <current_time>; Product_Inventory
Implementation • Leverages Oracle’s Bitmap Index Implementation • Uses G. Antoshenkov’s “Byte Aligned Data Compression” for creation and operation of bitmaps for rowid collections. • A collection of EPCs is grouped into different epc_bitmap_segments, • When the previous epc_suffix_bitmap (maximum size of RAW = 2000) can not hold any more EPCs • When epc_prefixes are different
Persistent epc_bitmap • Stored in a primary B+-tree structure primary B+-tree structure primary key columns non-key columns
Query Processing & Optimization • epc_bitmap function is executed per row • Queries with predicates on bitmap columns can be speeded up • Using Function-based B-tree index: On pre-computed value of bmap2Count(bmap_col) SELECT S.shelf_id FROM Shelf_inventory S WHERE bmap2Count(S.item_bmap) > 0 ; • Using Summary Bitmap Index
Summary Bitmap • Specialized index structure to speed up query to detect the presence of an epc identifier SELECT s.shelf_id, s.time FROM Shelf_Inventory s WHERE bmapExists(s.item_bmap, <epc1>); • Create a summary bitmapsbmapusing OR operation on{bmap1, …, bmapk}: bmapExists(sbmap) i 1…k: bmapExists(bmapi)
Summary Bitmap Index Structure EPC Bitmap column A Summary Bitmap Tree root node Bmp1 Bmp2 … branch nodes … leaf nodes … <Bmp1,rowid1> … <Bmpn,rowidn> Bmpn Table
Summary Bitmap Index Algorithm DFS(X, epc): X: a node in the tree index; epc: a given epc; bmp(X): the epc_bitmap associated with node X; if ( bmapExists(bmp(X), epc)== TRUE) { if (X == leaf node) report bmp(X); else for each child node V of X do DFS(V, epc); } Complexity:O(1) , no candidate O(m log N), m: fan-out, N: no. of rows
Experimental Setup • Data represents EPC-64 collections, which are randomly generated with a uniform distribution • Data sampled every hour for 30 days(720 obs.), 300 days (7200 obs) and 3000 days (72000 obs). • EPC collections of size 100000, 10000 and 1000 represent typical number of items in department and/or shelf
Query 1: Enumerate Removed Items • Enumerate the items removed from a shelf between 2 time intervals Collection Type Query SELECT b.epc_value FROM epc_coll a, TABLE(a.epcs) b WHERE a.time = '2004-03-04 10:00 AM' MINUS SELECT b2.epc_value FROM epc_coll a2, TABLE(a2.epcs) b2 WHERE a2.time = '2004-03-04 11:00 AM'; epc_bitmap Type Query SELECT * FROM TABLE( SELECT bmap2Epc(bmapMinus(p1.epcs,p2.epcs)) FROM epc_bmp p1, epc_bmp p2 WHERE p1.time = '2004-03-04 10:00 AM' AND p2.time = '2004-03-04 11:00 AM');
Query 2: Report All Observations • Report all observations when a given EPC was present Collection Type Query SELECT a.time FROM epc_coll a WHERE EXISTS(SELECT 1 FROM TABLE(a.epcs) b WHERE b.epc_value = ‘400003000300052A’); epc_bitmap Type Query SELECT time FROM epc_bmp WHERE bmapExists(epcs, ‘400003000300052A’);
Performance Discussion • Storage savings of 2 to 8 times due to compressed bitmaps • Bulk load performance faster due to smaller storage needs • For collections of size > 1000, query performance gains of 10% to 1200% • For smaller collection sizes, performance is same as native collections
Conclusions • epc_bitmap can model transient and persistent EPC collections • epc_bitmap can be used to support RFID-based item tracking applications • An efficient primary B+-tree based storage and access mechanism • Performance experiments validate the feasibility and benefits of the epc_bitmap • Support can be extended to Row Identifier (rowid) and Life Science Identifier (LSID) collections
Q & Q U E S T I O N S A N S W E R S A