-
Notifications
You must be signed in to change notification settings - Fork 10
TableSpace
Before we actually insert any real data into the database, we have to create our first table,
String db_root = "/home/feiben/DBTest/RTSeventhDB";
DBTaskCenter tc = new DBTaskCenter(db_root);
String table = "order";
tc.getActiveDB().createTable(table);
tc.getActiveDB().openTable(table);
The table we created is "order", createTable(...) and opentable(...) are two interfaces exposed to add new table into database. If you restart your DB instance, DBTaskCenter will open all the tables that created before. You need no manually open any of them one by one.
In non-relational database language, a table may be known as a model. In LunarBase context, one table may contain records with properties describing a purchase like userID, payment, product , timestamp..., while another table is a model of user specific properties like userID, name, age, favorite_color, degree, last_login_time. The two table link each other with the userID column.
You will specify which columns are searchable, meaning in real time analysis, the column data is well indexed for quick fetching the value(random point query or range query). For example, we need "name", "payment", "age" to be indexed:
LunarTable l_table = tc.getActiveDB().getTable(table);
l_table.addSearchable("string", "name");
l_table.addSearchable("int", "payment");
l_table.addSearchable("int", "age");
It is quite similar to the secondary index that traditional database systems always implement, but in a free style of definition. Once the searchable columns is added, LunarBase build column redundant data storage in background thread. All the query system is built upon this data structure.
Any searchable column cost a memory up to the threshold specified by rt_max_memory and rt_vm_swap in
real time configureation. The chapter of how to control memory consumption and how to use swap space as extra virtual memory should be revisited.
Plus, LunarBase enables multi-dimensional relational analysis, although it is a no-sql database system. We will talk about JOIN-like operations, denormalization, materialized view later, see how LunarBase handles these advanced features.
1 Home
1.1 summary
1.2 System Preparation
1.3 When LunarBase is your best choice
1.4 Benchmark
1.5 Power consumption
2 Data Model And Process
2.1 Why internal big cache
2.2 Memory Management: LunarMMU
2.3 Garbage Collection
2.4 Transaction Log
2.5 JOIN via materialized view
3 Real Time Computation: LunarMax
3.1 In-Memory File System: Memory Estimation
3.2 Configuration
3.3 Use SSD as a cheaper memory
3.4 Data Safety
3.5 HE Server VS. Cluster
3.6 High Availability
4 Create a database
4.1 Three modes
4.2 creation.conf settings
4.3 Table space
4.4 Multiple Instance
4.5 Database Status
4.6 Remove and Restore a table
5 Insertion
5.1 Insert as normal record
5.2 Insert to search engine
6 Query
6.1 Point Query
6.2 Result Handler: register your own event handler
6.3 Interpreter Pattern: complex query conditions
6.4 Range Query
6.5 Full-text Search
6.6 Algebraic Logical Query
8 Deletion
9 Materialized view
9.1 Eventual consistency
9.2 Update
9.3 MVCC in LunarBase
9.4 Easy JOIN via denormalization
9.5 CRUD in view
10 Distributed integration with
10.1 Kafka
10.2 Storm
10.3 Spark
11 Storage: Lunar Virtual File System
13 Roadmap of LunarBase future
15 FAQ