
Rname,u Robj,u,u Rdes,u,u
SHU-1
APL-9
RDA-6
SHU-
1
APL-9
Explore
Mine
SHU-
1
Uranus
Robj,u,u Rdes,u,c
RDA-
6
Scientific
APL-9
RDA-
6
Neptune
Pluto
Rname,c Robj,c,c Rdes,c,c
CLB-2 CLB-
2
Explore CLB-
2
Neptune
Robj,c,s
CLB-
2
Spy
Figure 2: The decomposed single-level relations.
All relations containing only the key - i.e.,
Rname,u (base single level relation containing all
keys at classification level U) and Rname,c - are
referred to as base relations. Suppose we want to
recover the output of the query “Select name, obj,
des from R where des <> Saturn”. The following is
a description of the steps of the BVA+ associated
with examples from the above the relation (Ai
denotes any attribute and A1 denotes the apparent
key).
1. For every relation RAi,x,y (single level relation
containing all entries form multilevel relation
having keys at classification level x and Ai
attribute values at classification level y), excluding
base relations, create a bit vector BV.RAi,x,y
denoting the presence or absence of the keys at
level x. BV.RAi,x,y should have the same number
entries as the number keys at level x (can be found
in relation Rkey,x).
Keys at level u = {SHU-1, APL-9, RDA-6}
Keys at level c = {CLB-2}
BV.Robj,u,u = 110
BV.Robj,u,c = 001
BV.Robj,c,c = 1
BV.Robj,c,s = 1
BV.Rdes,u,u = 100
BV.Rdes,u,c = 011
BV.Rdes,c
,c = 1
2. For every RAi,x,y excluding base relations create a
Mapping Vector Index, MVI.RAi,x,y, mapping the
position of the keys in RAi,x,y to the position of
the keys in RA1,x. The entries in the MVIs are of
the form (pib, pit) where pib, Position In Base
relation, is the position of the key in the base
relation; and pit, Position In This relation, is the
position of the key in this relation.
3. Create an Output Keys Vector OKVx (contains all
keys with classification x that will appear in the
output table) for all x:
a. As having a number of bits equal to the
number of entries in Rkey,x.
b. Read all relations having an attribute
participating in the selection criteria of the
query.
c. Get all entries from those relations satisfying
the selection criteria at each level x (at level u
we have SHU-1, and APL-9; and at level c we
have CLB-2).
d. For every entry that succeeds, set its position
in OKVx to 1. The position of an entry in
OKVx can be found by matching the key of
this entry to the key in Rkey,x and getting its
position in Rkey,x.
i.OKVu = 110 (the first three keys in
Rname,u will appear in output table)
ii.OKVc = 1 (the first and only key in
Rname,u will appear in output table)
4. Create a Polyinstantiated Keys Vector, PKVx,y
that contains all polyinstantiated keys at level x by
subjects at level y, for all x,y such that x<y. For all
attributes Ai requested in the output of the query
(name, obj and des) except for the key (name) do
the following:
a. Create PKVAi,x,y = the ANDing of all
BV.RAi,x,z where x <= z < y for all z
PK obj,u,c = BV.Robj u,u AND BV.Robj,u,c
= 110 AND 001 = 000
PK obj,u,s = BV.Robj u,u AND BV.Robj,u,c
= 110 AND 001 = 000
PK obj,c,s = BV.Robj c,c AND BV.Robj,c,s
= 1 AND 1= 1
PK des,u,c = BV.Rdesu,u AND BV.Rdes,u,c
= 100 AND 011 = 000
PK des,u,s = BV.Rdesu,u AND BV.Rdes,u,c
= 100 AND 011= 000
PK des,c,s = BV.Rdes c,c = 1
b. Get PKVx.y as the ORing of all PKVAi,x.y
PKVu,c = PK obj,u,c OR PKdes,u,c = 000
PKVu,s = PK obj,u,s OR PK des,u,s = 000
PKVc,s = PK obj,c,s OR PK des,c,s = 1
A 1-bit in position n in any vector PKVx
,y
signifies that the nth entry in Rkey,x is
polyinstantiated. Therefore, entry 1 in Rname,c that
is CLB-2 is polyinstantiated.
BVA+ - A BIT VECTORS ALGORITHM FOR ACCELERATING QUERIES IN MULTILEVEL SECURE
DATABASES
497