forked from drolbr/Overpass-API
-
Notifications
You must be signed in to change notification settings - Fork 0
/
konzept_vereinfachte_db.txt
98 lines (81 loc) · 1.72 KB
/
konzept_vereinfachte_db.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
base_file_name
blocksize
const size_of_Index
.index_to_buf(Index)
operator<(Index)
const size_of_Head
operator<(Head)
.head_to_buf(Head)
.index_of(Head)
.index_of_buf()
.id_of(Head)
.id_of_buf()
const size_of_Data
.data_to_buf(Data)
(Annahme: Interne Datenstruktur ist (Head, vector< Data >))
struct Indexed_Ordered_Id_To_Many< Index, Head, Data > {
.blocksize()
.data_file()
.index_file()
.id_idx_file()
{
base_file_name
}
.size_of_buf()
{
const size_of_Head
const size_of_Data
}
void flush_data(elem_begin(), elem_end())
.block_index< Index >()
.index_of()
.size_of()
.to_buf()
.compare()
.index_of_buf()
.index_to_buf()
void delete_insert(elem_begin(), elem_end())
.block_index()
.elem_begin()
.elem_end()
.index_of()
.keep_this_elem()
.compare()
.size_of()
.size_of_part()
.to_buf()
Ansatz mit to_delete, to_insert
- Drei Durchläufe über die Datei, ggf. Nutzung des Caches
void make_block_index()
.block_index()
.size_of_Index()
.index_of_buf()
.index_to_buf()
void make_id_index()
.first_new_block()
.id_of_buf()
void update_id_index(elem_begin(), elem_end())
.first_new_block()
.block_of_elem_begin()
.elem_begin()
.elem_end()
.id_of()
Container& select_by_id< Container >(ids_begin(), ids_end())
.ids_begin()
.ids_end()
.process()
Container& select_with_idx< Container >(idxs_begin(), idxs_end())
pair< Container, Container >& select_with_idx_dbl_range< Container >(idxs_inside_begin(), idxs_inside_end(), idxs_border_begin(), idxs_border_end())
.idxs_begin()
.idxs_end()
.block_notify()
.process()
select_all
.process()
count_with_idx
.count_idx()
---
zu den Wegen:
- füge die Wege einschließlich Knoten in eine Map< Way_ > ein
- erzeuge daraus die Node-Anfrage
- leite aus dem Ergebnis die richtigen Indexe für die Ways ab