Lealone 号称比 MySQL 快10倍的 OLTP 数据库

图片

一、简介

Lealone 是一个高性能的面向 OLTP 场景的关系数据库。Lealone是一个兼具RDBMS、NoSQL优点的面向OLTP/OLAP场景的异步化NewSQL单机与分布式关系数据库产品。它可以作为一个独立的数据库来使用,也可以当成一个微服务框架来用,或者两者同时用。支持高性能分布式事务、支持强一致性复制、支持全局快照隔离,并发写性能极其炸裂,号称比 MySQL 快10倍的 OLTP 数据库。目前 Lealone 5.2 已经发布,长期支持(LTS)且具有里程碑意义的大版本。

二、Lealone特性

高亮特性

  • 并发写性能极其炸裂

  • 全链路异步化,使用少量线程就能处理大量并发

  • 可暂停的、渐进式的 SQL 引擎

  • 基于 SQL 优先级的抢占式调度,慢查询不会长期霸占 CPU

  • 创建 JDBC 连接非常快速,占用资源少,不再需要 JDBC 连接池

  • 插件化存储引擎架构,内置 AOSE 引擎,采用新颖的异步化 B-Tree

  • 插件化事务引擎架构,事务处理逻辑与存储分离,内置 AOTE 引擎

  • 支持 Page 级别的行列混合存储,对于有很多字段的表,只读少量字段时能大量节约内存

  • 支持通过 CREATE SERVICE 语句创建可托管的后端服务

  • 只需要一个不到 2M 的 jar 包就能运行,不需要安装

普通特性

  • 支持索引、视图、Join、子查询、触发器、自定义函数、Order By、Group By、聚合

企业版

  • 支持高性能分布式事务、支持强一致性复制、支持全局快照隔离

  • 支持自动化分片 (Sharding),用户不需要关心任何分片的规则,没有热点,能够进行范围查询

  • 支持混合运行模式,包括4种模式: 嵌入式、Client/Server 模式、复制模式、Sharding 模式

  • 支持不停机快速手动或自动转换运行模式: Client/Server 模式 -> 复制模式 -> Sharding 模式

三、应用场景

  • 使用Lealone的分布式SQL引擎,可使用类似MySQL的SQL语法和标准JDBC API读写HBase中的数据, 支持各种DDL,支持触发器、自定义函数、视图、Join、子查询、Order By、Group By、聚合。

  • 对于Client/Server架构的传统单机RDBMS的场景,也可使用Lealone。

  • 如果应用想不经过网络直接读写数据库,可使用嵌入式Lealone。

四、Lealone架构

图片

五、相关地址

github

https://github.com/lealone

文档地址

https://github.com/lealone/Lealone-Docs

六、整合使用

1. 添加Lealone依赖

在pom.xml文件中添加Lealone驱动的依赖

<dependencies>
    <dependency>
        <groupId>org.lealone</groupId>
        <artifactId>lealone-client</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>

2. 配置数据源

在application.yml或application.properties文件中配置数据源

spring:
  datasource:
    driver-class-name: com.lealone.jdbc.Driver
    url: jdbc:lealone://localhost:3306/test
    username: root
    password: 123456

3. 创建实体类

创建一个实体类,用于映射数据库表

@Data
public class SysUser {
    private Integer id;
    private String name;
    private Integer age;
}

4. 创建Mapper接口

创建一个继承自BaseMapper的接口,用于操作数据库

@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {

}

5. 在ServiceImpl中使用Mapper

在ServiceImpl中使用@Resource注解注入Mapper,然后就可以调用它的方法来操作数据库

@Slf4j
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {

  @Resource
  private SysUserMapper sysUserMapper;
  
  @Override
  public List<SysUser> findAll() {
        return sysUserMapper.findAll();
    }

}

6. JDBC CRUD 示例


public class CRUDLealone {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:lealone:tcp://localhost:3306/lealone";
        Connection conn = DriverManager.getConnection(url, "root", "123456");
        Statement stmt = conn.createStatement();

        stmt.executeUpdate("CREATE TABLE IF NOT EXISTS sys_user (id int primary key,name varchar, age int)");
        stmt.executeUpdate("INSERT INTO sys_user(id, name, age) VALUES(1, 'ahope', 30)");
        stmt.executeUpdate("UPDATE sys_user SET age = 31 WHERE id = 1");
        ResultSet rs = stmt.executeQuery("SELECT * FROM sys_user");
        while (rs.next()) {
            System.out.println("id=" + rs.getInt(1) + "name=" + rs.getString(2) + " age=" + rs.getInt(3));
        }
        rs.close();
        stmt.executeUpdate("DELETE FROM sys_user WHERE id = 1");
        stmt.executeUpdate("DROP TABLE IF EXISTS sys_user");
        stmt.close();
        conn.close();
    }
}

图片

猜你喜欢

转载自blog.csdn.net/weixin_40381772/article/details/133122142