Flex  0.17.9
mutable_property_fragment.h
Go to the documentation of this file.
1 
16 #ifndef GRAPHSCOPE_FRAGMENT_MUTABLE_PROPERTY_FRAGMENT_H_
17 #define GRAPHSCOPE_FRAGMENT_MUTABLE_PROPERTY_FRAGMENT_H_
18 
19 #include <thread>
20 #include <tuple>
21 #include <vector>
22 
24 
28 #include "flex/utils/arrow_utils.h"
29 #include "flex/utils/indexers.h"
31 #include "flex/utils/yaml_utils.h"
32 #include "grape/io/local_io_adaptor.h"
33 #include "grape/serialization/out_archive.h"
34 
35 namespace gs {
36 
38  public:
40 
42 
43  void IngestEdge(label_t src_label, vid_t src_lid, label_t dst_label,
44  vid_t dst_lid, label_t edge_label, timestamp_t ts,
45  grape::OutArchive& arc, Allocator& alloc);
46 
47  void UpdateEdge(label_t src_label, vid_t src_lid, label_t dst_label,
48  vid_t dst_lid, label_t edge_label, timestamp_t ts,
49  const Any& arc, Allocator& alloc);
50 
51  void Open(const std::string& work_dir, int memory_level);
52 
53  void Compact(uint32_t version);
54 
55  void Warmup(int thread_num);
56 
57  void Dump(const std::string& work_dir, uint32_t version);
58 
59  void DumpSchema(const std::string& filename);
60 
61  const Schema& schema() const;
62 
64 
65  void Clear();
66 
67  Table& get_vertex_table(label_t vertex_label);
68 
69  const Table& get_vertex_table(label_t vertex_label) const;
70 
71  vid_t vertex_num(label_t vertex_label) const;
72 
73  size_t edge_num(label_t src_label, label_t edge_label,
74  label_t dst_label) const;
75 
76  bool get_lid(label_t label, const Any& oid, vid_t& lid) const;
77 
78  Any get_oid(label_t label, vid_t lid) const;
79 
80  vid_t add_vertex(label_t label, const Any& id);
81  std::shared_ptr<CsrConstEdgeIterBase> get_outgoing_edges(
82  label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const;
83 
84  std::shared_ptr<CsrConstEdgeIterBase> get_incoming_edges(
85  label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const;
86 
87  std::shared_ptr<CsrEdgeIterBase> get_outgoing_edges_mut(
88  label_t label, vid_t u, label_t neighbor_label, label_t edge_label);
89 
90  std::shared_ptr<CsrEdgeIterBase> get_incoming_edges_mut(
91  label_t label, vid_t u, label_t neighbor_label, label_t edge_label);
92 
94  label_t neighbor_label,
95  label_t edge_label) const;
96 
98  label_t neighbor_label,
99  label_t edge_label) const;
100 
101  CsrBase* get_oe_csr(label_t label, label_t neighbor_label,
102  label_t edge_label);
103 
104  const CsrBase* get_oe_csr(label_t label, label_t neighbor_label,
105  label_t edge_label) const;
106 
107  CsrBase* get_ie_csr(label_t label, label_t neighbor_label,
108  label_t edge_label);
109 
110  const CsrBase* get_ie_csr(label_t label, label_t neighbor_label,
111  label_t edge_label) const;
112 
113  void loadSchema(const std::string& filename);
114 
116  std::vector<IndexerType> lf_indexers_;
117  std::vector<CsrBase*> ie_, oe_;
118  std::vector<DualCsrBase*> dual_csr_list_;
119  std::vector<Table> vertex_data_;
120 
122 };
123 
124 } // namespace gs
125 
126 #endif // GRAPHSCOPE_FRAGMENT_MUTABLE_PROPERTY_FRAGMENT_H_
gs::MutablePropertyFragment::loadSchema
void loadSchema(const std::string &filename)
Definition: mutable_property_fragment.cc:47
indexers.h
gs::MutablePropertyFragment::schema_
Schema schema_
Definition: mutable_property_fragment.h:115
gs::MutablePropertyFragment::get_outgoing_edges_mut
std::shared_ptr< CsrEdgeIterBase > get_outgoing_edges_mut(label_t label, vid_t u, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.cc:455
gs::MutablePropertyFragment::vertex_data_
std::vector< Table > vertex_data_
Definition: mutable_property_fragment.h:119
gs::MutablePropertyFragment::ie_
std::vector< CsrBase * > ie_
Definition: mutable_property_fragment.h:117
gs::Any
Definition: types.h:383
gs::MutablePropertyFragment::add_vertex
vid_t add_vertex(label_t label, const Any &id)
Definition: mutable_property_fragment.cc:426
gs::timestamp_t
uint32_t timestamp_t
Definition: types.h:30
arrow_utils.h
gs::CsrBase
Definition: csr_base.h:61
gs::MutablePropertyFragment::schema
const Schema & schema() const
Definition: mutable_property_fragment.cc:389
schema.h
gs::vid_t
uint32_t vid_t
Definition: types.h:31
gs::MutablePropertyFragment::Clear
void Clear()
Definition: mutable_property_fragment.cc:54
gs::MutablePropertyFragment::edge_label_num_
size_t edge_label_num_
Definition: mutable_property_fragment.h:121
gs
Definition: adj_list.h:23
gs::MutablePropertyFragment::dual_csr_list_
std::vector< DualCsrBase * > dual_csr_list_
Definition: mutable_property_fragment.h:118
gs::MutablePropertyFragment::vertex_num
vid_t vertex_num(label_t vertex_label) const
Definition: mutable_property_fragment.cc:402
gs::MutablePropertyFragment::get_oid
Any get_oid(label_t label, vid_t lid) const
Definition: mutable_property_fragment.cc:422
gs::Table
Definition: table.h:30
gs::ArenaAllocator
Definition: allocators.h:29
gs::MutablePropertyFragment
Definition: mutable_property_fragment.h:37
gs::MutablePropertyFragment::get_outgoing_edges_raw
CsrConstEdgeIterBase * get_outgoing_edges_raw(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: mutable_property_fragment.cc:444
gs::MutablePropertyFragment::mutable_schema
Schema & mutable_schema()
Definition: mutable_property_fragment.cc:391
gs::MutablePropertyFragment::get_incoming_edges_raw
CsrConstEdgeIterBase * get_incoming_edges_raw(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: mutable_property_fragment.cc:449
gs::MutablePropertyFragment::DumpSchema
void DumpSchema(const std::string &filename)
Definition: mutable_property_fragment.cc:70
gs::MutablePropertyFragment::get_ie_csr
CsrBase * get_ie_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.cc:484
gs::CsrConstEdgeIterBase
Definition: csr_base.h:27
dual_csr.h
gs::Schema
Definition: schema.h:29
gs::MutablePropertyFragment::IngestEdge
void IngestEdge(label_t src_label, vid_t src_lid, label_t dst_label, vid_t dst_lid, label_t edge_label, timestamp_t ts, grape::OutArchive &arc, Allocator &alloc)
Definition: mutable_property_fragment.cc:371
gs::MutablePropertyFragment::MutablePropertyFragment
MutablePropertyFragment()
Definition: mutable_property_fragment.cc:24
yaml_utils.h
gs::MutablePropertyFragment::Dump
void Dump(const std::string &work_dir, uint32_t version)
Definition: mutable_property_fragment.cc:299
gs::MutablePropertyFragment::Open
void Open(const std::string &work_dir, int memory_level)
Definition: mutable_property_fragment.cc:116
gs::MutablePropertyFragment::vertex_label_num_
size_t vertex_label_num_
Definition: mutable_property_fragment.h:121
gs::MutablePropertyFragment::get_incoming_edges_mut
std::shared_ptr< CsrEdgeIterBase > get_incoming_edges_mut(label_t label, vid_t u, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.cc:462
gs::MutablePropertyFragment::UpdateEdge
void UpdateEdge(label_t src_label, vid_t src_lid, label_t dst_label, vid_t dst_lid, label_t edge_label, timestamp_t ts, const Any &arc, Allocator &alloc)
Definition: mutable_property_fragment.cc:381
gs::MutablePropertyFragment::Compact
void Compact(uint32_t version)
Definition: mutable_property_fragment.cc:271
gs::MutablePropertyFragment::oe_
std::vector< CsrBase * > oe_
Definition: mutable_property_fragment.h:117
gs::MutablePropertyFragment::edge_num
size_t edge_num(label_t src_label, label_t edge_label, label_t dst_label) const
Definition: mutable_property_fragment.cc:406
types.h
gs::MutablePropertyFragment::get_oe_csr
CsrBase * get_oe_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.cc:468
gs::MutablePropertyFragment::get_lid
bool get_lid(label_t label, const Any &oid, vid_t &lid) const
Definition: mutable_property_fragment.cc:417
gs::MutablePropertyFragment::Warmup
void Warmup(int thread_num)
Definition: mutable_property_fragment.cc:358
mutable_csr.h
gs::MutablePropertyFragment::get_outgoing_edges
std::shared_ptr< CsrConstEdgeIterBase > get_outgoing_edges(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: mutable_property_fragment.cc:431
gs::MutablePropertyFragment::get_vertex_table
Table & get_vertex_table(label_t vertex_label)
Definition: mutable_property_fragment.cc:393
gs::MutablePropertyFragment::lf_indexers_
std::vector< IndexerType > lf_indexers_
Definition: mutable_property_fragment.h:116
gs::label_t
uint8_t label_t
Definition: types.h:32
gs::MutablePropertyFragment::~MutablePropertyFragment
~MutablePropertyFragment()
Definition: mutable_property_fragment.cc:26
table.h
gs::MutablePropertyFragment::get_incoming_edges
std::shared_ptr< CsrConstEdgeIterBase > get_incoming_edges(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: mutable_property_fragment.cc:438