Skip to content
This repository has been archived by the owner on Jul 29, 2020. It is now read-only.

Commit

Permalink
重构
Browse files Browse the repository at this point in the history
  • Loading branch information
ylht committed May 8, 2020
1 parent 413afef commit 152443f
Show file tree
Hide file tree
Showing 20 changed files with 74 additions and 68 deletions.
2 changes: 1 addition & 1 deletion src/main/java/ecnu/db/DbChecking.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
public class DbChecking {
private ArrayList<BaseCheck> checkGroups;
private Table[] tables;
private BaseCheck.CheckKind checkKind;
private final BaseCheck.CheckKind checkKind;

DbChecking(BaseCheck.CheckKind checkKind) {
//初始化数据表
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ecnu/db/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public static void main(String[] args) {
//初始化logger
LogManager.getLogger();
//项目执行的核心类
DbChecking dbChecking = new DbChecking(BaseCheck.CheckKind.Serializable);
DbChecking dbChecking = new DbChecking(BaseCheck.CheckKind.RepeatableRead);
//初始化scheme
dbChecking.createScheme();
//载入数据
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ecnu/db/check/CheckNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
* 用于计算的Node的基础类
*/
public class CheckNode {
private int tableIndex;
private int columnIndex;
private final int tableIndex;
private final int columnIndex;

private ArrayList<Integer> keys;
private int range;
private final ArrayList<Integer> keys;
private final int range;

/**
* 该列开始计算之前的和
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ecnu/db/config/SystemConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ public synchronized static SystemConfig getConfig() {
return config;
}

public String getDatabaseVersion() {
return document.valueOf("generator/database");
}

public static void setConfig(String configFileName) {
config = new SystemConfig(configFileName);
}

public String getDatabaseVersion() {
return document.valueOf("generator/database");
}

public String getDatabaseurl() {
return document.valueOf("generator/database/url");
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ecnu/db/schema/AbstractColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public abstract class AbstractColumn {
* 在int,decimal,float,date中代表数值范围区间,在varchar中代表长度范围区间
*/
int range;
private ColumnType columnType;
private final ColumnType columnType;

AbstractColumn(int range, ColumnType columnType) {
this.range = range;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ecnu/db/schema/DecimalColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class DecimalColumn extends AbstractColumn {

private static DecimalFormat df;
private static int allPointLength = -1;
private int decimalLength;
private final int decimalLength;

DecimalColumn(int range, int pointLength) {
super(range, ColumnType.DECIMAL);
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/ecnu/db/schema/Table.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ public class Table {
private final static String[] RECORD_COLUMNS =
new String[]{"checkReadCommitted decimal(20,5) default 0", "checkRepeatableRead INT default 0"};
private final Random R = new Random();
private int tableIndex;
private int tableSize;
private int foreignKeyNum;
private ArrayList<Integer> keys = new ArrayList<>();
private final int tableIndex;
private final int tableSize;
private final int foreignKeyNum;
private final ArrayList<Integer> keys = new ArrayList<>();
private ArrayList<Integer> foreignKeys;
private ArrayList<AbstractColumn> columns = new ArrayList<>();
private AtomicInteger currentLineNum = new AtomicInteger();
private final ArrayList<AbstractColumn> columns = new ArrayList<>();
private final AtomicInteger currentLineNum = new AtomicInteger();
private HashMap<AbstractColumn.ColumnType, ArrayList<CheckNode>> checkNodes =
new HashMap<>(AbstractColumn.ColumnType.values().length);

Expand Down
17 changes: 7 additions & 10 deletions src/main/java/ecnu/db/threads/TransactionThread.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,19 @@

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.CountDownLatch;

/**
* @author wangqingshuai
*/
public class TransactionThread implements Runnable {
private Random r = new Random();
private ArrayList<BaseTransaction> transactions = new ArrayList<>();
private int runCount;
private CountDownLatch count;
private DatabaseConnector databaseConnector;
private int threadID;

private final Random r = new Random();
private final ArrayList<BaseTransaction> transactions = new ArrayList<>();
private final int runCount;
private final CountDownLatch count;
private final DatabaseConnector databaseConnector;
private final int threadID;


public TransactionThread(int threadID, ArrayList<BaseTransaction> transactions,
Expand All @@ -29,7 +26,6 @@ public TransactionThread(int threadID, ArrayList<BaseTransaction> transactions,
this.count = count;
this.threadID = threadID;
databaseConnector = new DatabaseConnector();
databaseConnector.beginTransaction();

for (BaseTransaction transaction : transactions) {
try {
Expand All @@ -52,6 +48,7 @@ public void run() {
for (int i = 0; i < runCount; i++) {
int randomIndex = r.nextInt(transactions.size());
try {
databaseConnector.setAutoCommitFalse();
transactions.get(randomIndex).execute();
} catch (Exception e) {
if (!"Deadlock found when trying to get lock; try restarting transaction".equals(e.getMessage())) {
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/ecnu/db/transaction/Function.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ public class Function extends BaseTransaction {
private final static String SUB_AFTER_SELECT_SQL = "update t* set tp* = ? where tp0 = ? and tp* > ?";
private final static String SELECT_SQL = "select tp* from t* where tp0=?";
private final static String SELECT_FOR_UPDATE_SQL = "select tp* from t* where tp0=? for update";
private AbstractColumn.ColumnType columnType;
private int k;
private boolean add;
private int[] range;
private ZipDistributionList[] xKeys;
private ZipDistributionList[] yKeys;
private String[] xSQLs;
private final AbstractColumn.ColumnType columnType;
private final int k;
private final boolean add;
private final int[] range;
private final ZipDistributionList[] xKeys;
private final ZipDistributionList[] yKeys;
private final String[] xSQLs;
private PreparedStatement[] xPrepareStatements;
private String[] ySQLs;
private final String[] ySQLs;
private PreparedStatement[] yPrepareStatements;
private String[] xSelectSQLs;
private PreparedStatement[] xSelectPrepareStatements;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ecnu/db/transaction/Order.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ public class Order extends BaseTransaction {


private String[] selectSQLS;
private String[] updateSQLs;
private String[] insertSQLs;
private final String[] updateSQLs;
private final String[] insertSQLs;

private PreparedStatement[] selectPreparedStatements;
private PreparedStatement[] updatePreparedStatements;
private PreparedStatement[] insertPreparedStatements;

private int maxOrderItemCount;
private ZipDistributionList[] keys;
private final int maxOrderItemCount;
private final ZipDistributionList[] keys;

public Order(ArrayList<CheckNode> checkNodes, boolean isSelect, boolean forUpdate, int maxOrderItemCount) {
this.maxOrderItemCount = maxOrderItemCount;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ecnu/db/transaction/PhantomRead.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ public class PhantomRead extends BaseTransaction {
private PreparedStatement secondSelectSQLPreparedStatement;
private PreparedStatement insertPhantomReadPreparedStatement;

private ZipDistributionList key;
private int range;
private long sleepMills;
private double readWriteRadio;
private final ZipDistributionList key;
private final int range;
private final long sleepMills;
private final double readWriteRadio;

public PhantomRead(CheckNode checkNode, long sleepMills, double readWriteRadio) {
insertSQL = INSERT_SQL;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ecnu/db/transaction/ReadCommitted.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ public class ReadCommitted extends BaseTransaction {
private PreparedStatement updateRecordPreparedStatement;
private PreparedStatement selectSQLPreparedStatement;

private ZipDistributionList key;
private long updateSleepMills;
private double readWriteRadio;
private int range;
private final ZipDistributionList key;
private final long updateSleepMills;
private final double readWriteRadio;
private final int range;

public ReadCommitted(CheckNode checkNode, long updateSleepMills, double readWriteRadio) {

Expand Down
12 changes: 6 additions & 6 deletions src/main/java/ecnu/db/transaction/Remittance.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ public class Remittance extends BaseTransaction {
* 事务在range范围内随机得到值时,range的大小,计算公式为
* range= tupleRange/ rangeRandomCount
*/
private int rangeRandomCount;
private int[] range;
private ZipDistributionList[] addKeys;
private ZipDistributionList[] subKeys;
private String[] addSQLs;
private String[] subSQLs;
private final int rangeRandomCount;
private final int[] range;
private final ZipDistributionList[] addKeys;
private final ZipDistributionList[] subKeys;
private final String[] addSQLs;
private final String[] subSQLs;
private PreparedStatement[] addPrepareStatements;
private PreparedStatement[] subPrepareStatements;
private String[] selectSQLs;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/ecnu/db/transaction/RepeatableRead.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ public class RepeatableRead extends BaseTransaction {
private PreparedStatement updateRepeatableReadPreparedStatement;


private ZipDistributionList key;
private int range;
private final ZipDistributionList key;
private final int range;

private long selectSleepMills;
private double readWriteRadio;
private final long selectSleepMills;
private final double readWriteRadio;

public RepeatableRead(CheckNode checkNode, long selectSleepMills, double readWriteRadio) {
updateInfluenceRead = UPDATE_INFLUENCE_READ;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/ecnu/db/transaction/WriteSkew.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ public class WriteSkew extends BaseTransaction {
private static final String UPDATE_SQL = "update t* set tp* = tp* - ? where tp0 =?";

private String selectSQL;
private String[] updateSQLs;
private final String[] updateSQLs;

private PreparedStatement selectPreparedStatement;
private PreparedStatement[] updatePreparedStatements;

private ZipDistributionList key;
private final ZipDistributionList key;

public WriteSkew(ArrayList<CheckNode> checkNodes) {
assert checkNodes.size() == 2;
Expand Down Expand Up @@ -64,6 +64,6 @@ public void execute() throws SQLException {
}
}
databaseConnector.commit();
System.out.println(selectPreparedStatement.toString()+"\n"+updatePreparedStatements[updateIndex].toString());
// System.out.println(selectPreparedStatement.toString() + "\n" + updatePreparedStatements[updateIndex].toString());
}
}
7 changes: 4 additions & 3 deletions src/main/java/ecnu/db/utils/DatabaseConnector.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public static void main(String[] args) throws SQLException {

//数据库标准操作

public void beginTransaction() {
public void setAutoCommitFalse() {
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
Expand All @@ -66,6 +66,7 @@ public void beginTransaction() {
}
}


public void commit() throws SQLException {
conn.commit();
}
Expand All @@ -83,7 +84,7 @@ public void close() {
}

public PreparedStatement getPrepareStatement(String sql) throws SQLException {
return conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
return conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
}

public void executeSql(String sql) throws SQLException {
Expand All @@ -105,7 +106,7 @@ void loadData(int tableIndex) throws SQLException {
CopyManager copyManager = new CopyManager((BaseConnection) conn);
try {
copyManager.copyIn("COPY t" + tableIndex + " FROM stdin DELIMITER as ',';",
new FileReader(new File("data/t" + tableIndex+".csv")));
new FileReader(new File("data/t" + tableIndex + ".csv")));
} catch (IOException e) {
e.printStackTrace();
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/ecnu/db/utils/LoadData.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
* 将数据生成到本地之后,调用mysql的命令将数据上传的服务器
*/
public class LoadData implements Runnable {
private Table table;
private CountDownLatch count;
private final Table table;
private final CountDownLatch count;

public LoadData(Table table, CountDownLatch count) {
this.table = table;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/ecnu/db/utils/ZipDistributionList.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import java.util.Collections;

public class ZipDistributionList {
private ArrayList<Integer> list;
private ZipfDistribution zf;
private final ArrayList<Integer> list;
private final ZipfDistribution zf;

public ZipDistributionList(ArrayList<Integer> list, boolean forTransaction) {
this.list = new ArrayList<>(list);
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Manifest-Version: 1.0
Main-Class: ecnu.db.Main
Multi-Release: true

4 changes: 4 additions & 0 deletions target/classes/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Manifest-Version: 1.0
Main-Class: ecnu.db.Main
Multi-Release: true

0 comments on commit 152443f

Please sign in to comment.