Patent application title: Database Management Program

Abstract:

A database management program in which even in a case where a row having a
value of a column A duplicated is arranged in sequential space as an
initial state for speeding-up a search with a condition of the column A,
even if insertion, deletion and update of a row are repeated, a time
required for the search with condition of the column A is not lengthen,
and rearrangement requiring a long time in a case of solving this problem
using a conventional method is not required. In the database management
program, when managing a single or a plurality of sets of rows having
values of the column A duplicated using relational database, in a case
where the row having the value of the column A duplicated is arranged in
the sequential space as the initial state for speeding-up the search with
the condition of the column A, only the set of rows having the value of
the column A duplicated is arranged in the sequential spaces when
insertion, deletion and update of a row are performed.

Claims:

1. A database management program comprising:a program searching data of a
duplicated ID sequential arrangement table and updating data with respect
to the duplicated ID sequential arrangement table;a duplicated ID
sequential arrangement table identification table managing a duplicated
ID sequential arrangement table name and a management number; anda
duplicated ID sequential arrangement table ID management table managing
the duplicated ID sequential arrangement table name and a duplicated key
column name, wherein the duplicated ID sequential arrangement table has a
function arranging a row having a duplicated value of a key column
composed of one of a single column and a plurality of columns in
sequential space on a storage, wherein the program recognizes the
duplicated ID sequential arrangement table and a duplicated key column
according to the duplicated ID sequential arrangement table
identification table and the duplicated ID sequential arrangement table
ID management table, and wherein when there is sequential empty space of
sufficient size, in order to further arrange a row having a duplicated ID
in sequential space,when inserting a certain row into the duplicated ID
sequential arrangement table,in a case where judgment that sequential
empty space is not found in space having rows with same values of a
duplicated key column arranged on the storage is made,the database
management program updates the data using algorithm including a procedure
performing a search of sequential empty space having capacity larger than
an entirely of the rows with the same values of the duplicated key
columns and a procedure moving the entirely of the rows with the same
values of the duplicated key columns to empty space when empty space is
found in a search.

2. A database management program comprising:a program searching data of a
duplicated ID sequential arrangement table and updating data with respect
to a duplicated ID sequential arrangement table;a duplicated ID
sequential arrangement table identification table managing a duplicated
ID sequential arrangement table name and a management number;a duplicated
ID sequential arrangement table ID management table managing the
duplicated ID sequential arrangement table name and a duplicated key
column name; anda duplicated ID sequential arrangement table parent-child
relation management table managing the duplicated ID sequential
arrangement table name, the duplicated key column name and a key order
number,wherein the duplicated ID sequential arrangement table has a
function arranging a row having a duplicated value of a first-order key
column composed of one of a single column and plural columns in
sequential space on a storage according to the duplicated ID sequential
arrangement table parent-child ID relation management table and further
arranging a row having a duplicated value of a high-order duplicated key
column in ascending order also in sequential space on a storage according
to the duplicated ID sequential arrangement table parent-child ID
relation management table,wherein the program recognizes the duplicated
ID sequential arrangement table according to the duplicated ID sequential
arrangement table identification table, the duplicated ID sequential
arrangement table ID management table and the duplicated ID sequential
arrangement table parent-child relation management table, andwherein when
there is sequential empty space of sufficient size, in order to further
arrange a row having a duplicated ID in a first-order key column and a
row having a duplicated ID in a high-order key column in ascending order
in sequential space,when inserting a certain row into the duplicated ID
sequential arrangement table,in a case where judgment that sequential
empty space is not found in space having rows with same values of one of
a first-order and a high-order duplicated key column arranged on the
storage is made,the database management program updates the data using
algorithm including a procedure performing a search of sequential empty
space having capacity larger than an entirely of a rows with same values
of an each-order duplicated key column and a procedure moving an entirely
of rows with same value of a highest-order duplicated key column to empty
space in ascending order using a value of a first-order key column when
empty space having capacity larger than an entirely of rows with same
values of a certain-order duplicated key column is found in a search.

3. The database management program according to claim 2,wherein the
duplicated ID sequential arrangement table parent-child relation
management table manages a duplicated ID sequential arrangement table
name, a duplicated key column name, a condition of parent-child relation
and a key order number, andwherein rank relation of a key order number is
provided in a single column structuring the duplicated ID sequential
arrangement table using a condition of parent-child relation.

Description:

TECHNICAL FIELD

[0001]The present invention relates to a database management system (DBMS)
in which data space is segmentalized, in particular to a database
management program of a DBMS for an embedded device.

BACKGROUND ART

[0002]With regard to an embedded device having large-capacity storage,
list fetch is used frequently in many applications such as a car
navigation system, a music player and an HDD recorder.

[0003]Especially in the car navigation system, a dedicated file system in
which emphasis is put to performing a real-time processing of list fetch
using an I/O device performing a seek processing extremely slowly such as
CD/DVD is used, and contrivance is made so that data to be list-displayed
is positioned in sequential space on the disk. However, this dedicated
file system is designed for a device performing no update operation, and
in a case where update is performed using a device capable of update
operation represented by an HDD, all the data are rearranged at each
update operation.

[0004]Further, in the DBMS, as a function to allocate data in sequential
space, there is a clustered table that guarantees that data is sorted
physically with respect to a specified clustered key column structuring a
table. This is shown in Non-Patent Document 1, for example.

[0005]Here, an example of a conventional embodiment of the clustered table
in a DBMS in which storage space management composed of a page and a
segment shown in FIG. 4 is assumed is explained hereinafter.

[0006]Here, a page (5002) is a physical unit representing a minimum unit
of data I/O to storage space (5001) and each of segments (5003, 5004) is
a physical unit representing a minimum unit in allocation of space to a
table and an index. The segment is composed of a plurality of the pages.
Relation between the clustered table and the storage space is shown in
FIG. 5. The clustered table (6001) is a clustered table in which a
sequential number column (6002) is set to a clustered key column and
segments on storage space (6007) are allocated. Columns (6003, 6004,
6005) of the clustered table (6001) are stored in a segment (6014) on the
storage space (6007), and another segment (6015) is allocated to a column
(6006). Thus, in a case where the sequential number column is set to a
clustered key column, data is sorted physically with respect to the
sequential number column. In segments (6014, 6015), empty space (6012,
6013) are secured for future insert operation, respectively.

[0007]When insert operation to the clustered table is performed, since it
is required to maintain a state in which data is sorted physically,
insertion is performed by a method different from that for a normal
table. The method of performing insert operation to the clustered table
is explained with reference to a flow chart shown in FIG. 6. In an insert
processing (7001) performing the insert operation, firstly, size of a row
to be inserted and size of empty space of storage space are compared and
judgment (7002) whether the insertion can be performed or not is made.
Here, if the insertion cannot be performed, error judgment is made (7012)
and the insert processing is ended (7009). If the insertion can be
performed, a segment including a largest row among rows having a
clustered key which is equal or smaller is searched in the storage space
(7003) and judgment (7004) whether there is empty space to insert a row
in the segment or not is made. If there is the empty space, a procedure
of A (7013) is carried out. Here, firstly, a lock of an index related to
a corresponding table is gotten (7005), and then, the row is inserted
into the empty space in the segment (7006), the index is updated (7007),
the lock of the index is released (7008) and the insert processing is
ended (7009). An operation example in a case where a row having a
clustered key of 12 is inserted according to the procedure of A (7013) is
shown in FIG. 7. Here, since there is still empty space (8005) in the
segment (8002) including a row (8004) having the same clustered key, the
row (8006) having the clustered key of 12 is inserted into the empty
space in the same segment.

[0008]On the other hand, if there is no empty space in the judgment (7004)
whether there is empty space to insert a row in the same segment or not,
a procedure of B (7014) is carried out. Here, firstly, the lock of the
index related to a corresponding table is gotten (7010), and then, the
row is inserted into a new segment (7011), the lock of the index is
released (7007) and the insert processing is ended (7009). An operation
example in a case where a row having a clustered key of 12 is inserted
according to the procedure of B (8014) is shown in FIG. 8. Here, since
there is no empty space in the segment (9002) including a row (9004)
having the same clustered key, a new segment (9005) is secured and the
row (9006) having the clustered key of 12 is inserted.

[0009]By use of the clustered table, in performing a search with a range
of the clustered key value designated, since storage I/O is
sequentialized, the search is sped up. However, on the other hand, a
state in which data is sorted physically is broken by the update and the
insert operation over empty space at preparation of the table, and
therefore, periodical maintenance is required. This maintenance is also
rearrangement of all data in the same manner as in the update operation
in the dedicated file system described above.

[0010]In the DBMS for embedded application, in order to achieve data I/O
performance comparable to that of the dedicated file system incapable of
update of the conventional system, it is necessary to arrange data in
physical sequential space in the same manner. However, in the embedded
application, since maintenance-free and long-term performance stability
is important, an existing clustered table cannot be used as it is.
Therefore, a table structure which is specialized for data fetch of a
pattern called list fetch in the embedded application and improving I/O
performance is desired.

[0011]Here, a characteristic of the list fetch is explained taking car
navigation application as an example, with reference to FIG. 9. In the
car navigation system, intersection data is handled as one of map
information. The intersection data is divided into sections (10001) each
having a unique identifier and managed. In the car navigation
application, list fetch of the intersection data is required to have
real-time property most strongly. This is performed at a route search,
and there are two patterns described below.

[0012]1. list fetch of intersections in a section (10002) including own
car

[0013]2. list fetch of intersections in 9 adjacent sections (10003) around
own car

[0014]Here, a pattern in which all data is arranged in sequential space in
a case where a file system dedicated for car navigation is used is the
pattern of 1, and it is impossible to arrange all data including the
pattern of 2 in the sequential space. Therefore, also in a DBMS
specialized for embedded application, it is enough if it is guaranteed
that the pattern of 1 is arranged in the sequential space.

[0015]And, as a characteristic common to the two patterns, it is pointed
out that a search condition is an equal condition of a section number and
that a plurality of intersections having the same section number exists
in search target data. By putting this characteristic otherwise in terms
of DBMS, it becomes a search of an equal condition with respect to
columns including a duplicated key.

[0016]Note that, a similar list fetch appears frequently also in
application other than the car navigation application. For example, list
fetch such as "list of music titles by an identical artist" and "list of
music titles contained in an identical album" in music player application
and "list of programs of * month * day" and "list of programs of a
channel *" in HDD recorder application appear.

[0018]However, in a case of managing a single or plurality of sets of rows
having values of the column A duplicated using relational database, even
if a row having a value of the column A duplicated is arranged in
sequential space as an initial state in order to speed-up a search having
a condition of the column A, by repeating insert, deletion and update of
rows, a state in which the row having the value of the column A
duplicated is arranged in the sequential space is broken and time
required for the search having the condition of the column A is
lengthened, and therefore, in a case of solving this problem by a
conventional method, rearrangement of all rows is required and long time
is taken.

[0019]Accordingly, an object of the present invention is to provide a
database management program in which the time required for the search
having the condition of the column A is not lengthened even if insert,
deletion and update of rows are repeated even in the case where the row
having the value of the column A duplicated is arranged in the sequential
space as an initial state in order to speed up the search having the
condition of the column A, and the rearrangement of all rows taking long
time in the case of solving this problem by the conventional method is
not required.

[0020]In the database management program according to the present
invention, when no empty sequential space is found in space where the
rows having the same value of the column A is arranged on storage in a
case of performing insertion, deletion and update, only a set of rows
having the value of the column A duplicated is arranged in the sequential
space using algorithm having a characteristic of including a procedure to
search for sequential empty space having capacity larger than the whole
rows having the same value of the column A, and a procedure to move the
whole rows having the same value of the column A to the empty space in a
case where the empty space is found by the search.

[0021]According to the present invention, when managing a single or
plurality of sets of rows having values of the column A duplicated using
the relational database, in a case where a row having a value of the
column A duplicated is arranged in sequential space as an initial state
in order to speed-up the search having the condition of the column A,
even if insertion, deletion and update of a plurality of rows are
repeated, the time required for the search having the condition of the
column A is not lengthened, and the rearrangement of all rows taking long
time in the case of solving this problem by the conventional method is
not required.

BRIEF DESCRIPTIONS OF THE DRAWINGS

[0022]FIG. 1 is a block diagram showing a structure of a database
management system according to a first embodiment of the present
invention;

[0023]FIG. 2 is a data configuration diagram showing a duplicated ID
sequential arrangement table identification table according to the first
embodiment of the present invention;

[0024]FIG. 3 is a configuration diagram showing a duplicated ID sequential
arrangement table ID management table according to the first embodiment
of the present invention;

[0025]FIG. 4 is an explanatory diagram showing a storage space management
method composed of a page and a segment in an embodiment of a clustered
table of a conventional system;

[0026]FIG. 5 is an explanatory diagram showing relation between the
clustered table and storage space in the embodiment of the clustered
table of the conventional system;

[0027]FIG. 6 is an explanatory diagram showing a flow chart of insert
operation to the clustered table in the embodiment of the clustered table
of the conventional system;

[0028]FIG. 7 is an explanatory diagram showing an example of a procedure A
in the flow chart of the insert operation to the clustered table in the
embodiment of the clustered table of the conventional system;

[0029]FIG. 8 is an explanatory diagram showing an example of a procedure B
in the flow chart of the insert operation to the clustered table in the
embodiment of the clustered table of the conventional system;

[0030]FIG. 9 is an explanatory diagram showing a characteristic of list
fetch of the conventional system taking car navigation application as an
example;

[0031]FIG. 10 is an explanatory diagram showing an example of a structure
of a table including a duplicated key according to the first embodiment
of the present invention;

[0032]FIG. 11 is an explanatory diagram showing a structure of a
duplicated ID sequential arrangement table on storage space according to
the first embodiment of the present invention;

[0033]FIG. 12 is an explanatory diagram showing an example of a schematic
view of the structure of the duplicated ID sequential arrangement table
on the storage space according to the first embodiment of the present
invention;

[0034]FIG. 13 is an explanatory diagram showing a flow chart of insert
operation to the duplicated ID sequential arrangement table according to
the first embodiment of the present invention;

[0035]FIG. 14 is an explanatory diagram showing an example of a procedure
A in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the first embodiment of the
present invention;

[0036]FIG. 15 is an explanatory diagram showing an example of a procedure
B in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the first embodiment of the
present invention;

[0037]FIG. 16 is an explanatory diagram showing an example of a procedure
C in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the first embodiment of the
present invention;

[0038]FIG. 17 is an explanatory diagram showing an example of a procedure
D in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the first embodiment of the
present invention;

[0039]FIG. 18 is an explanatory diagram showing an example of a procedure
E in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the first embodiment of the
present invention;

[0040]FIG. 19 is an explanatory diagram showing an example of a structure
of a table including first-order and second-order duplicated keys
according to a second embodiment of the present invention and a structure
thereof on storage space;

[0041]FIG. 20 is an explanatory diagram showing a flow chart of insert
operation to a duplicated ID sequential arrangement table according to
the second embodiment of the present invention;

[0042]FIG. 21 is an explanatory diagram showing an example of a procedure
A in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the second embodiment of the
present invention;

[0043]FIG. 22 is an explanatory diagram showing an example of a procedure
B in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the second embodiment of the
present invention;

[0044]FIG. 23 is an explanatory diagram showing an example of a procedure
C in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the second embodiment of the
present invention;

[0045]FIG. 24 is an explanatory diagram showing an example of a procedure
D in the flow chart of the insert operation to the duplicated ID
sequential arrangement table according to the second embodiment of the
present invention;

[0047]FIG. 26 is a diagram showing an example of a Z-order storage method
according to a third embodiment of the present invention;

[0048]FIG. 27 is a diagram showing an example of the Z-order storage
method according to the third embodiment of the present invention;

[0049]FIG. 28 is an explanatory diagram showing an example of a structure
of a table including a duplicated key based on the Z-order storage method
according to the third embodiment of the present invention and a
structure thereof on storage space; and

[0051]A first embodiment of the present invention is described with
reference to FIG. 1 to FIG. 3 and FIG. 10 to FIG. 18.

[0052]FIG. 1 shows an entire structure of a database management system
according to the first embodiment of the present invention. Here, a
database server (1001) and an update client (1012) and a search client
(1014) are connected via a network (1016).

[0053]The database server (1001) executes a database management program
(1002) and includes a storage device (1008).

[0057]Note that, an entire system structure is the same in a second
embodiment and a third embodiment described later. The duplicated ID
sequential arrangement table parent-child relation management table
(1007) is a table mainly used in the second embodiment and the third
embodiment. In the explanation of the first embodiment described
hereinafter, the duplicated ID sequential arrangement table parent-child
relation management table (1007) does not appear.

[0058]A structure of the duplicated ID sequential arrangement table
identification table is shown in FIG. 2. The duplicated ID sequential
arrangement table identification table (1005) is a table to which a table
which is an object of arrangement and management is registered so that
data having duplicated ID are arranged sequentially, and is structured of
a management number column (2002) and a table name column (2003). In an
example of the diagram, a table named an intersection table is registered
as the object of the arrangement and the management with a management
number 1.

[0059]Next, a structure of the duplicated ID sequential arrangement table
ID management table is shown in FIG. 3. The duplicated ID sequential
arrangement table ID management table 1006 has a table name column (3002)
and a column name column (3003), and a column name to be a standard of
sequential arrangement is registered in correspondence with a table name
which is the object of the arrangement and the management.

[0060]FIG. 10 shows an actual example of the intersection table described
above. The intersection table (11001) is a table storing intersection
data divided into sections shown in FIG. 9. Here, a column (11002) named
ID shows a section identifier. According to a registration content of the
duplicated ID sequential arrangement table ID management table (1006)
mentioned above, that is, with setting an ID column value to a key, data
of the intersection table (11001) is arranged and managed. In particular,
storing to the duplicated ID sequential arrangement table (1010) is
performed so that data of rows having the ID column value duplicated is
arranged in a sequential position.

[0061]A part of a structure of the duplicated ID sequential arrangement
table (1010) on the storage space is shown in FIG. 11. The duplicated ID
sequential arrangement table is a table having a characteristic that a
set of rows (12002) having the same ID on the storage space (1009) is
arranged (12005) in adjacent segments (12004). Further, in the same
manner as the case of the clustered table, empty space (12006) is secured
for preparation for future insert operation.

[0062]Note that, a plurality of segments structuring a set of rows (12002)
having the same ID arranged in adjacent segment is referred to shortly as
a set of rows (13001) of the same ID composed of a set of segments shown
in FIG. 12 in explanation hereinafter. In addition, used space (12005)
and empty space (12006) are referred to shortly as used space (13002) and
empty space (13003), respectively.

[0063]In a case of performing insert operation to the duplicated ID
sequential arrangement table, since it is required to maintain a state in
which rows having the same ID are arranged in adjacent segments
physically, insertion is performed by a method different from that for a
normal table. The method of performing the insert operation to the
duplicated ID sequential arrangement table is explained with reference to
a flow chart shown in FIG. 13.

[0064]In an insert processing (14001) performing the insert operation,
firstly, size of a row to be inserted and size of empty space of the
storage space are compared, and judgment (14002) whether the insertion
can be performed or not is made. Here, if the insertion cannot be
performed, error judgment is made (14021) and the insert processing is
ended (14010). If the insertion can be performed, a position of a set of
segments including a set of rows having the same ID in the storage space
is searched (14003). Different from the case of the clustered table, this
search (14003) is an equal condition, and there may be a case in which
the set of segments cannot be found. Therefore, judgment (14004) whether
the set of segments is found or not is carried out.

[0065]If the set of segments is found, judgment (14005) whether there is
empty space to insert a row in a first partial set of the set of segments
or not is carried out. If there is empty space, the procedure of A
(14022) is carried out. In the procedure of A (14022), firstly, a lock of
the index related to a corresponding table is gotten (14006), and then,
the row is inserted into the empty space of the first partial set of the
set of segments (14007), the index is updated (14008), the lock of the
index is released (14009) and the insert processing is ended (14010). An
operation example in a case where a row of ID=13 is inserted according to
the procedure of A (14022) is shown in FIG. 14. Here, since there is
empty space in a set of segments (15001) including a set of rows of
ID=13, the row is inserted into the empty space in a set of same segments
(15002).

[0066]On the other hand, if there is no empty space in the judgment
(14005), sequential empty space larger than size of an entire set of rows
having the same ID as that of the row to be inserted is searched in the
storage space (14011), and judgment (14012) whether it is found or not is
made. In a case where it is found in the judgment (14012), a procedure of
B (14023) is carried out. In the procedure of B (14023), firstly, a lock
related to a corresponding table is gotten (14013), then an entire
existing set of rows having the same ID as that of the row to be inserted
is moved (14014) to a set of new segments to be secured in the empty
space found in the search (14011), the row is inserted into empty space
of a set of the same segments (14015), the index is updated (14008), the
lock of the index is released (14009), and the insert processing is ended
(14010). An operation example in a case where a row of ID=13 is inserted
according to the procedure of B (14023) is shown in FIG. 15. Here, since
there is no empty space in a set of segments including a set of rows of
ID=13 (16001), an existing set of rows of ID=13 is moved (16002) to a set
of new segments, and the row is inserted (16003) into empty space of a
set of the same segments.

[0067]In a case where sequential empty space larger than the size of the
entire set of rows having the same ID as that of the row to be inserted
is not found in the judgment (14012), judgment (14016) whether there is a
partial set having empty space in partial sets of the set of segments
having the same ID as that of the row to be inserted or not is made. In
the judgment (14016), if a partial set of the set of segments having
empty space is found, the procedure of C (14024) is carried out. In the
procedure of C (14024), firstly, a lock related to a corresponding table
is gotten (14013), the row is inserted into the partial set of the set of
segments having the empty space (14018), the index is updated (14008),
the lock of the index is released (14009) and the insert processing is
ended (14010). An operation example in a case where a row of ID=13 is
inserted according to the procedure of C (14024) is shown in FIG. 16.
Here, since a set of segments including a set of rows of ID=13 is
composed of two partial sets (17001, 17002), and further, empty space
(17003) is smaller than size of an entire set of rows of ID=13, the row
is inserted (17004) into a second partial set (17002).

[0068]On the other hand, in a case where a partial set of segments having
empty space is not found in the judgment (14016), a procedure of D
(14025) is carried out. In the procedure of D (14025), firstly, a lock
related to a corresponding table is gotten (14019), and then, the row is
inserted into a new partial set of the set of segments (14020), the index
is updated (14008), the lock of the index is released (14009) and the
insert processing is ended (14010). An operation example in a case where
a row of ID=13 is inserted according to the procedure of D (14025) is
shown in FIG. 17. Here, since there is no empty space in a set of
segments (18001) including a set of rows of ID=13, and further, empty
space (18002) is not large enough, a new partial set (18003) is secured
in the empty space (18002) and the row of ID=13 is inserted (18004).

[0069]Further, in a case where a set of segments including a set of rows
having the same ID as that of the row to be inserted is not found in the
judgment (14004), a procedure of E (14026) is carried out. In the
procedure of E (14026), firstly, a lock related to a corresponding table
is gotten (14019), and then, the row is inserted (14020) into a new
partial set of the set of segments, the index is updated (14008), the
lock of the index is released (14009) and the insert processing is ended
(14010). An operation example in a case where a row of ID=13 is inserted
according to the procedure of E (14025) is shown in FIG. 18. Here, since
there is not a set of segments including a set of rows of ID=13, a new
partial set (19002) is secured in the empty space (19001), and the row of
ID=13 is inserted (19003).

[0070]In the present embodiment, by performing the procedure of C (14024),
the rows having duplicated ID are stored in non-sequential space.
However, by performing the procedure of B (14023) in later insert
operation, the rows are rearranged to sequential space.

Second Embodiment

[0071]By arranging a plurality of columns among columns structuring a
table at physical vicinity on storage, I/O to a storage device may be
sped-up. FIG. 19 shows an example in which among columns structuring an
intersection table (21001), an ID column (21003) and a road type column
(21002) are arranged (21005, 21006) at physical vicinity on storage space
(21004).

[0072]In the present embodiment, a plurality of columns designated to be
arranged at physical vicinity are sequentially called n-th-order key
column, and in the more dominant column, a value of n is made larger. In
this example, in a case of an equal condition search of the ID column
(21003) which is a second-order key column, all data can be fetched
collectively. For example, as for an equal condition search having "ID is
equal to 2" as a search condition, a set of segments (21013) of ID=2 can
be fetched collectively, and as for an equal condition search having "ID
is equal to 3" as a search condition, a set of segments (21014) with ID=3
can be fetched collectively.

[0073]Further, also in a case of an equal condition search of a road type
column (21002) which is a first-order key column, since rows matching the
condition are rather organized, data can be fetched at high speed. For
example, as for an equal condition search having "road type is equal to
highway" as a search condition, a plurality of sets of segments (21007,
21010) of road type=highway are fetched, in a case of "road type is equal
to national road", a plurality of sets of segments (21008, 21011) of road
type=national road are fetched, and in a case of "road type is equal to
prefectural road", a plurality of sets of segments (21009, 21012) of road
type=prefectural road are fetched. Such a table is one obtained by
expanding a duplicated ID sequential arrangement table so as to cope with
a plurality of columns.

[0074]In a case where insert operation is performed to the duplicated ID
sequential arrangement table expanded to a plurality of columns, it is
required to maintain a state in which rows having the same ID are
arranged in adjacent segments physically over a plurality of columns, and
therefore, insertion is performed by a method different from that for a
normal table.

[0075]A method of performing insert operation to the duplicated ID
sequential arrangement table expanded to a plurality of columns is
described with reference to a flow chart shown in FIG. 20.

[0076]In an insert processing (22001) performing the insert operation,
firstly, size of a row to be inserted and size of empty space of storage
space are compared, and judgment (22002) whether the insertion can be
performed or not is made. Here, if the insertion cannot be performed,
error judgment is made (22027) and the insert processing is ended
(22014). If the insertion can be performed, an insert portion is searched
in the storage space. For example, in an example shown in FIG. 19, the
insert portion of a row of ID=2 and road type=national road is one
(21008) included in a set of segments of ID=2 among a plurality of sets
of segments (21008, 21011) of road type=national road. Here, using a
counter variable i, a position of an i-th-order set of segments to be the
insert portion is searched (22004) sequentially from i=1 (22003). And
then, judgment (22005) whether it is found or not is made, and if it is
not found, 1 is added to i (22006) and the search (22004) is repeated.
Here, in a case where i reaches a highest order, the procedure goes ahead
in the judgment (22005).

[0077]Next, judgment (22007) whether there is empty space in a first
partial set of an i-th-order set of segments found in the judgment
(22005) or i is a highest order or not is made, and if one of these
conditions is satisfied, a lock of an index related to a corresponding
table is gotten (22008), and then, judgment (22009) whether i=1 is true
or not is made. If i=1 is true in the judgment (22009), a procedure of A
(22028) is carried out. In the procedure of A (22028), firstly, the row
is inserted into an empty space of a first-order set of segments (22011),
the index is updated (22012), the lock of the index is released (22013)
and the insert operation is ended (22014). An operation example in a case
where a row of ID=2 and road type=national road is inserted according to
the procedure of A (22028) is shown in FIG. 21. Here, since there is
empty space in a set of segments (23001) including a set of rows of ID=2
and road type=national road, the row is inserted (23002) into the empty
space of a set of the same segments.

[0078]On the other hand, in a case where i=1 is not true in the judgment
(22009), a procedure of B (22029) is carried out. In the procedure of B
(22029), since it is a case in which a first-order set of segments to
which the row is inserted is not found in the judgment (22004), firstly,
empty space is secured (22010) for the first-order set of segments. And
then, the row is inserted (22011) into the empty space of the first-order
set of segments, the index is updated (22012), the lock of the index is
released (22013), and the insert operation is ended (22014). An operation
example in a case where a row of ID=2 and road type=national road is
inserted according to the procedure of B (22029) is shown in FIG. 22.
Here, although there is no set of segments including a set of rows of
ID=2 and road type=national road, there is sequential empty space (24002)
just after a set of segments (24001) including a set of rows of ID=2, and
therefore, space for the first-order set of segments is secured just
after the set of segments (24001) including the set of rows of ID=2, and
the row is inserted (24003) thereinto.

[0079]In a case where both the conditions are not satisfied in the
judgment (22007), an action moving a second or higher order set of
segments to other empty space is carried out. Here, using a counter
variable j, sequential empty space larger than a j-th-order set of
segment is searched (22016) sequentially from j=highest order (22015).
And then, judgment (22017) whether it is found or not is made, and if it
is not found, 1 is subtracted from j (22018), and the search (22016) is
repeated.

[0080]Here, in a case where j reaches 0, the procedure goes ahead in the
judgment (22017). And then, the lock of the index related to the
corresponding table is gotten (22019).

[0081]Next, judgment (22020) whether j=0 is true or not is made. In a case
where j=0 is true in the judgment (22020), a procedure of C (22030) is
carried out. In the procedure of C (22030), since j=0 is true in the
judgment (22017), that is, sequential empty space larger than the
first-order set of segments cannot be secured, the first-order set of
segments is divided. Firstly, empty space for the first-order set of
segments is secured (22021), the row is inserted (22022) into the empty
space of the first-order set of segments, the index is updated (22012),
the lock of the index is released (22013) and the insert operation is
ended (22014). An operation example in a case where a row of ID=2 and
road type=national road is inserted according to the procedure of C
(22030) is shown in FIG. 23. Here, since there is no empty space in the
first-order set of segments (25001) including a set of rows of ID=2 and
road type=national road and size of empty space (25002) is smaller than
the first-order set of segments (25001), empty space for the first-order
set of segments is secured in the empty space (25002), and then, the row
is inserted (25003) into the empty space of the first-order set of
segments.

[0082]In a case where j=0 is not true in the judgment (22020), a procedure
of D (22031) is carried out. In the procedure of D (22031), since
judgment that sequential empty space larger than a j-th-order set of
segments higher than first-order is found in the judgment (22017) is
made, the j-th-order set of segments is rearranged in a sequential space.

[0083]Firstly, sequential empty space larger than the j-th-order set of
segments is secured (22023) in the empty space found in the search
(22016), and then, the first-order set of segments is moved (22024) to n
which is an insertion row in ascending order, the row is inserted (22025)
into empty space of the first-order set of segments, the first-order set
of segments is moved (22026) from n which is the insertion row or later
in ascending order, the index is updated (22012), the lock of the index
is released (22013), and the insert operation is ended (22014). An
operation example in a case where a row of ID=2 and road type=national
road is inserted according to the procedure of D (22031) is shown in FIG.
24. Here, since there is no empty space in a first-order set of segments
(26001) including a set of rows of ID=2 and road type=national road and
size of empty space (26003) is larger than a second-order set of segments
(26002), the second-order set of segments is rearranged (26004)
collectively in sequential space.

[0084]Finally, a duplicated ID sequential arrangement table identification
table, a duplicated ID sequential arrangement table ID management table
and a duplicated ID sequential arrangement table parent-child relation
management table according to the present embodiment are shown in FIG.
25. The duplicated ID sequential arrangement table identification table
(27001) is composed of a management number (27002) column and a table
name (27003) column, and is the same as the duplicated ID sequential
arrangement table identification table 1005 according to the first
embodiment shown in FIG. 2. The duplicated ID sequential arrangement
table ID management table (27004) is composed of a table name (27005)
column and a column name (2700.6) column and the duplicated ID sequential
arrangement table parent-child relation management table is composed of a
table name (27008) column, a column name (27009) column and an order
number (27010) column.

[0085]Here, since the intersection table (21001) is stored as the
duplicated ID sequential arrangement table with designating the road type
column (21002) in FIG. 19 as a first-order key column and the ID column
(21003) as a second-order key column, a row (27011) indicating the
intersection table is included in the duplicated ID sequential
arrangement table identification table (27001), a row (27012) showing the
road type column of the intersection table and a row (27013) indicating
the ID column are included in the duplicated ID sequential arrangement
table ID management table (27004), and further, a row (27014) showing
that an order number of the road type column is 1 and a row (27015)
showing that an order number of the ID column is 2 are included in the
duplicated ID sequential arrangement table parent-child relation
management table (27007).

Third Embodiment

[0086]As an effective storage method of map data divided into sections
(10001) shown in FIG. 9, there is a Z-order storage method. An example of
the Z-order storage method is shown in FIG. 26. The Z-order storage
method is a method allocating identification numbers of sections in
Z-shaped order, and storing in order of the section numbers.

[0087]As an example of an allocation method of the identification numbers,
in FIG. 26, identification numbers from 1 to 4 are allocated in Z-shaped
(28005) order to a set of adjacent four sections (28001, 28002, 28003,
28004) at left top. By using the Z-order storage method, in a case where
the intersection list fetch is performed for adjacent nine sections
around own car marked as A (28006), intersection data of adjacent four
sections marked as a (28007) can be fetched collectively.

[0088]The Z-order storage method can be expanded to space of adjacent four
or more sections. As an example thereof, an example of second-order
Z-order storage handling adjacent 16 sections is shown in FIG. 27. A set
of the adjacent 16 sections is structured by allocating four sets of
adjacent four sections in Z-shaped order. In FIG. 27, identification
numbers are allocated to four sets of adjacent four sections (29001,
29002, 29003, 29004) in Z-shape (29005). Here, sets of adjacent four
sections (29001, 29002, 29003, 29004) are referred to as a first-order
Z-shape, and a set of adjacent 16 sections (29005) is referred to as a
second-order Z-shape.

[0089]By allocating identification numbers in second-order Z-shaped order,
sections from 1 (29006) to 16 (29007) can be stored so as to be fetched
collectively. And, by enlarging the Z-shape in the same manner, expansion
obtaining such as a third-order Z-shape composed of adjacent 64 sections
or a fourth-order Z-shape composed of adjacent 256 sections can be made.

[0090]The four sections included in the same first-order z-shape have a
characteristic that values obtained by dividing (section number-1) by
four are equal. The value obtained by adding 1 to this quotient is
defined as a first-order Z-shape identifier. The first-order Z-shape
identifiers (28008, 28009, 28010, 28011, 28012, 28013, 28014, 28015,
28016, 28017, 28018, 28019, 29020, 28021, 28022, 28023) are identifiers
allocated according to the above definition.

[0091]In the same manner, as for the second-order Z-shape, one obtained by
adding 1 to a quotient obtained by dividing (first-order Z-shape
identifier--1) by four is referred to as a second-order Z-shape
identifier. The numeric FIGS. 1, 2, 3, 4 indicated by reference symbols
29008 to 29011 in FIG. 27 are the second-order Z-shape identifiers
allocated sequentially according to the above definition.

[0092]The Z-order storage method handled in the present embodiment can be
embodied as a special example of the duplicated ID sequential arrangement
table expanded to a plurality of columns shown in the second embodiment
irrespective of a storage order.

[0093]FIG. 28 shows an example in which a first-order Z-order storage
method is expanded to a plurality of columns. Here, an example in which
among columns structuring the intersection table (30001), four sections
adjacent in first-order Z-shaped order with regard to an ID column
(30002) are arranged (30014, 30015) at physical vicinity on storage space
(30003) is shown. Here, among the four sections adjacent in first-order
Z-shaped order shown in FIG. 26, a fourth adjacent four sections (28011)
and a fifth adjacent four sections (28012) are arranged. The fourth
adjacent four sections (28011) are a set of segments (30014) of
first-order Z-shaped order identifier=4 and four sections (30006, 30007,
30008, 30009) structuring this are arranged in sequential space as a
first-order key column (30004) on the storage space.

[0094]And, the fifth adjacent four sections (28012) are a set of segments
(30015) of first-order Z-shaped order identifier=5 and four sections
(30010, 30011, 30012, 30013) structuring this are arranged in sequential
space as a first-order key column (30004) on the storage space (30003) in
the same manner. As described above, by regarding the first-order Z-shape
identifiers as the second-order key columns, it can be embodied as a
special example of the duplicated ID sequential arrangement table
expanded to two columns. Recursively, by regarding a n-th Z-shape
identifiers as a n+1-th key columns, it can be embodied as a special
example of a duplicated ID sequential arrangement table expanded to n+1
columns.

[0095]A duplicated ID sequential arrangement identification table, a
duplicated ID sequential arrangement ID management table and a duplicated
ID sequential arrangement table parent-child relation management table
used in the present embodiment are described with reference to FIG. 29.
In the present embodiment, in comparison with the case in the second
embodiment, information to be managed in the duplicated ID sequential
arrangement table parent-child relation management table is different.

[0096]In the duplicated ID sequential arrangement table parent-child
relation management table (31007) used in the present embodiment, in
addition to a table name (31008) column, a column name (31009) column and
an order number (31011) column, a condition column (31010) column is
provided so that it can be identified whether it follows to the Z-order
storage method or not. The duplicated ID sequential arrangement table
identification table (31001) is composed of a management number (31002)
column and a table name (31003) column in the same manner as in the case
of the second embodiment, and the duplicated ID sequential arrangement
table ID management table (31004) is structured of a table name (31005)
column and a column name (31006) column also in the same manner as in the
case of the second embodiment.

[0097]Here, in order to arrange four vicinities adjacent in the
first-order Z-shaped order adjacently with respect to the ID column
(30002) of the intersection table (30001) in FIG. 28, a row (31012)
indicating the intersection table is included in the duplicated ID
sequential arrangement table identification table (31001), a row (31013)
indicating the ID column of the intersection table is included in the
duplicated ID sequential arrangement table ID management table (31004)
and a row (31014) showing that an order number of the ID column is 1 and
the Z-order storage method is applied and a row (31015) showing that an
order number of the ID column is 2 and the Z-order storage method is
applied in the same manner are included in the duplicated ID sequential
arrangement table parent-child relation management table (31007).

[0098]Note that, in the present embodiment, the Z-order storage method is
taken as an example, however, an N-order storage method arranging
N-shaped order four vicinities in the same manner and a clock-order
storage method arranging four vicinities clockwise can known easily by
analogy. Also in the duplicated ID sequential arrangement table
parent-child relation management table (31007) in the present embodiment,
by designating the N-order storage method or the clock-order storage
method in the condition column (31010), the N-order storage method or the
clock-order storage method can be realized.

INDUSTRIAL APPLICABILITY

[0099]In embedded applications, since restriction of usable memory size is
severe and a large buffer cannot be allocated like in DBMS for server,
I/O performance of a storage device affects directly upon total search
performance. Especially in car navigation system application, since a
file structure optimized so that a conventional car navigation system can
use sequential access of an optical disk device efficiently is used, even
if a hard disk device of higher-speed is introduced, by occurrence of a
random access, performance is degraded with respect to an optical disk.
Therefore, it is necessary to perform a control so as to restrict the
random access using the present invention.