Flex  0.17.9
table.h
Go to the documentation of this file.
1 
16 #ifndef GRAPHSCOPE_PROPERTY_TABLE_H_
17 #define GRAPHSCOPE_PROPERTY_TABLE_H_
18 
19 #include <map>
20 #include <memory>
21 #include <string_view>
22 
23 #include "flex/utils/id_indexer.h"
25 #include "grape/io/local_io_adaptor.h"
26 #include "grape/serialization/out_archive.h"
27 
28 namespace gs {
29 
30 class Table {
31  public:
32  Table();
33  ~Table();
34 
35  void init(const std::string& name, const std::string& work_dir,
36  const std::vector<std::string>& col_name,
37  const std::vector<PropertyType>& types,
38  const std::vector<StorageStrategy>& strategies_);
39 
40  void open(const std::string& name, const std::string& snapshot_dir,
41  const std::string& work_dir,
42  const std::vector<std::string>& col_name,
43  const std::vector<PropertyType>& property_types,
44  const std::vector<StorageStrategy>& strategies_);
45 
46  void open_in_memory(const std::string& name, const std::string& snapshot_dir,
47  const std::vector<std::string>& col_name,
48  const std::vector<PropertyType>& property_types,
49  const std::vector<StorageStrategy>& strategies_);
50 
51  void open_with_hugepages(const std::string& name,
52  const std::string& snapshot_dir,
53  const std::vector<std::string>& col_name,
54  const std::vector<PropertyType>& property_types,
55  const std::vector<StorageStrategy>& strategies_,
56  bool force);
57 
58  void touch(const std::string& name, const std::string& work_dir);
59 
60  void copy_to_tmp(const std::string& name, const std::string& snapshot_dir,
61  const std::string& work_dir);
62 
63  void dump(const std::string& name, const std::string& snapshot_dir);
64 
65  void reset_header(const std::vector<std::string>& col_name);
66 
67  std::vector<std::string> column_names() const;
68 
69  std::string column_name(size_t index) const;
70 
71  int get_column_id_by_name(const std::string& name) const;
72 
73  std::vector<PropertyType> column_types() const;
74 
75  std::shared_ptr<ColumnBase> get_column(const std::string& name);
76 
77  const std::shared_ptr<ColumnBase> get_column(const std::string& name) const;
78 
79  std::vector<Any> get_row(size_t row_id) const;
80 
81  std::shared_ptr<ColumnBase> get_column_by_id(size_t index);
82 
83  const std::shared_ptr<ColumnBase> get_column_by_id(size_t index) const;
84 
85  size_t col_num() const;
86  size_t row_num() const;
87  std::vector<std::shared_ptr<ColumnBase>>& columns();
88  std::vector<ColumnBase*>& column_ptrs();
89 
90  void insert(size_t index, const std::vector<Any>& values);
91 
92  // insert properties except for the primary key
93  // col_ind_mapping: the mapping from the column index in
94  // the raw file row to the column index in the schema
95  void insert(size_t index, const std::vector<Any>& values,
96  const std::vector<int32_t>& col_ind_mapping);
97 
98  void resize(size_t row_num);
99 
100  inline Any at(size_t row_id, size_t col_id) {
101  return column_ptrs_[col_id]->get(row_id);
102  }
103 
104  inline Any at(size_t row_id, size_t col_id) const {
105  return column_ptrs_[col_id]->get(row_id);
106  }
107 
108  void ingest(uint32_t index, grape::OutArchive& arc);
109 
110  void close();
111 
112  private:
113  void buildColumnPtrs();
114  void initColumns(const std::vector<std::string>& col_name,
115  const std::vector<PropertyType>& types,
116  const std::vector<StorageStrategy>& strategies_);
117 
119 
120  std::vector<std::shared_ptr<ColumnBase>> columns_;
121  std::vector<ColumnBase*> column_ptrs_;
122 
123  bool touched_;
124 };
125 
126 } // namespace gs
127 
128 #endif // GRAPHSCOPE_PROPERTY_TABLE_H_
Definition: table.h:30
void open_in_memory(const std::string &name, const std::string &snapshot_dir, const std::vector< std::string > &col_name, const std::vector< PropertyType > &property_types, const std::vector< StorageStrategy > &strategies_)
Definition: table.cc:66
IdIndexer< std::string, int > col_id_indexer_
Definition: table.h:118
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir, const std::vector< std::string > &col_name, const std::vector< PropertyType > &property_types, const std::vector< StorageStrategy > &strategies_)
Definition: table.cc:52
void ingest(uint32_t index, grape::OutArchive &arc)
Definition: table.cc:257
int get_column_id_by_name(const std::string &name) const
Definition: table.cc:154
void touch(const std::string &name, const std::string &work_dir)
Definition: table.cc:95
std::vector< PropertyType > column_types() const
Definition: table.cc:162
std::vector< Any > get_row(size_t row_id) const
Definition: table.cc:194
void reset_header(const std::vector< std::string > &col_name)
Definition: table.cc:126
Table()
Definition: table.cc:20
void dump(const std::string &name, const std::string &snapshot_dir)
Definition: table.cc:117
std::vector< std::shared_ptr< ColumnBase > > columns_
Definition: table.h:120
void init(const std::string &name, const std::string &work_dir, const std::vector< std::string > &col_name, const std::vector< PropertyType > &types, const std::vector< StorageStrategy > &strategies_)
Definition: table.cc:40
std::vector< ColumnBase * > & column_ptrs()
Definition: table.cc:227
void copy_to_tmp(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir)
Definition: table.cc:107
std::string column_name(size_t index) const
Definition: table.cc:146
void resize(size_t row_num)
Definition: table.cc:251
std::vector< std::string > column_names() const
Definition: table.cc:137
~Table()
Definition: table.cc:21
std::shared_ptr< ColumnBase > get_column(const std::string &name)
Definition: table.cc:171
Any at(size_t row_id, size_t col_id)
Definition: table.h:100
void initColumns(const std::vector< std::string > &col_name, const std::vector< PropertyType > &types, const std::vector< StorageStrategy > &strategies_)
Definition: table.cc:23
std::shared_ptr< ColumnBase > get_column_by_id(size_t index)
Definition: table.cc:202
Any at(size_t row_id, size_t col_id) const
Definition: table.h:104
size_t row_num() const
Definition: table.cc:219
void insert(size_t index, const std::vector< Any > &values)
Definition: table.cc:229
std::vector< std::shared_ptr< ColumnBase > > & columns()
Definition: table.cc:225
std::vector< ColumnBase * > column_ptrs_
Definition: table.h:121
bool touched_
Definition: table.h:123
void close()
Definition: table.cc:277
void open_with_hugepages(const std::string &name, const std::string &snapshot_dir, const std::vector< std::string > &col_name, const std::vector< PropertyType > &property_types, const std::vector< StorageStrategy > &strategies_, bool force)
Definition: table.cc:80
void buildColumnPtrs()
Definition: table.cc:268
size_t col_num() const
Definition: table.cc:218
Definition: adj_list.h:23
std::string snapshot_dir(const std::string &work_dir, uint32_t version)
Definition: file_names.h:192
Definition: types.h:399