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  Any at(size_t row_id, size_t col_id);
101 
102  Any at(size_t row_id, size_t col_id) const;
103 
104  void ingest(uint32_t index, grape::OutArchive& arc);
105 
106  void close();
107 
108  private:
109  void buildColumnPtrs();
110  void initColumns(const std::vector<std::string>& col_name,
111  const std::vector<PropertyType>& types,
112  const std::vector<StorageStrategy>& strategies_);
113 
115 
116  std::vector<std::shared_ptr<ColumnBase>> columns_;
117  std::vector<ColumnBase*> column_ptrs_;
118 
119  bool touched_;
120 };
121 
122 } // namespace gs
123 
124 #endif // GRAPHSCOPE_PROPERTY_TABLE_H_
gs::Table::reset_header
void reset_header(const std::vector< std::string > &col_name)
Definition: table.cc:126
gs::Any
Definition: types.h:383
gs::Table::ingest
void ingest(uint32_t index, grape::OutArchive &arc)
Definition: table.cc:265
gs::Table::get_row
std::vector< Any > get_row(size_t row_id) const
Definition: table.cc:194
gs::Table::col_num
size_t col_num() const
Definition: table.cc:218
gs::Table::insert
void insert(size_t index, const std::vector< Any > &values)
Definition: table.cc:229
gs::Table::~Table
~Table()
Definition: table.cc:21
gs::Table::Table
Table()
Definition: table.cc:20
column.h
gs::Table::close
void close()
Definition: table.cc:285
gs::Table::buildColumnPtrs
void buildColumnPtrs()
Definition: table.cc:276
gs
Definition: adj_list.h:23
gs::Table::get_column_id_by_name
int get_column_id_by_name(const std::string &name) const
Definition: table.cc:154
gs::Table::col_id_indexer_
IdIndexer< std::string, int > col_id_indexer_
Definition: table.h:114
gs::Table::row_num
size_t row_num() const
Definition: table.cc:219
gs::Table::get_column_by_id
std::shared_ptr< ColumnBase > get_column_by_id(size_t index)
Definition: table.cc:202
gs::Table
Definition: table.h:30
gs::Table::at
Any at(size_t row_id, size_t col_id)
Definition: table.cc:257
gs::Table::columns
std::vector< std::shared_ptr< ColumnBase > > & columns()
Definition: table.cc:225
gs::Table::open
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
gs::Table::column_name
std::string column_name(size_t index) const
Definition: table.cc:146
gs::Table::touch
void touch(const std::string &name, const std::string &work_dir)
Definition: table.cc:95
gs::Table::column_names
std::vector< std::string > column_names() const
Definition: table.cc:137
gs::Table::column_ptrs
std::vector< ColumnBase * > & column_ptrs()
Definition: table.cc:227
gs::IdIndexer< std::string, int >
gs::Table::open_in_memory
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
gs::Table::dump
void dump(const std::string &name, const std::string &snapshot_dir)
Definition: table.cc:117
gs::Table::initColumns
void initColumns(const std::vector< std::string > &col_name, const std::vector< PropertyType > &types, const std::vector< StorageStrategy > &strategies_)
Definition: table.cc:23
gs::Table::column_ptrs_
std::vector< ColumnBase * > column_ptrs_
Definition: table.h:117
id_indexer.h
gs::Table::touched_
bool touched_
Definition: table.h:119
gs::snapshot_dir
std::string snapshot_dir(const std::string &work_dir, uint32_t version)
Definition: file_names.h:192
gs::Table::column_types
std::vector< PropertyType > column_types() const
Definition: table.cc:162
gs::Table::resize
void resize(size_t row_num)
Definition: table.cc:251
gs::Table::copy_to_tmp
void copy_to_tmp(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir)
Definition: table.cc:107
gs::Table::init
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
gs::Table::columns_
std::vector< std::shared_ptr< ColumnBase > > columns_
Definition: table.h:116
gs::Table::get_column
std::shared_ptr< ColumnBase > get_column(const std::string &name)
Definition: table.cc:171
gs::Table::open_with_hugepages
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