`
JadeLuo
  • 浏览: 425821 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Sequoiadb操作

阅读更多
package com.iminido.nosql;

import com.google.gson.Gson;
import com.iminido.constant.Const;
import com.iminido.instruction.core.IstRequ;
import com.iminido.log.Log;
import com.iminido.util.SU;
import static com.iminido.util.SU.parseJSON2Map;
import com.iminido.util.TL;
import com.sequoiadb.base.CollectionSpace;
import com.sequoiadb.base.DBCollection;
import com.sequoiadb.base.DBCursor;
import com.sequoiadb.base.Sequoiadb;
import com.sequoiadb.base.SequoiadbDatasource;
import com.sequoiadb.base.SequoiadbOption;
import com.sequoiadb.exception.BaseException;
import com.sequoiadb.net.ConfigOptions;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.bson.BSONObject;
import org.bson.BasicBSONObject;
import org.bson.util.JSON;

/**
 *
 * @author JadeLuo
 */
public class NoSQLDb {

    private static SequoiadbDatasource sequoiadbDatasource;
    private static final Log log = Log.init(NoSQLDb.class);
    private static Semaphore semaphore = new Semaphore(1);

    static {
        initSequoiadbDatasource();
    }

    public static void initSequoiadbDatasource() {
        ArrayList<String> urls = new ArrayList<>();
        ConfigOptions nwOpt = new ConfigOptions();          // 定义连接选项
        SequoiadbOption dsOpt = new SequoiadbOption();	    // 定义连接池选项

        urls.add(Const.SEQUOIADB_HOST + ":" + Const.SEQUOIADB_PORT);
//        urls.add("ubuntu-dev2:11810");
//        urls.add("ubuntu-dev3:11810");

        nwOpt.setConnectTimeout(500);                       // 设置若连接失败,超时时间(ms)
        nwOpt.setMaxAutoConnectRetryTime(0);	            // 设置若连接失败,重试次数

// 以下设置的都是 SequoiadbOption 的默认值
        dsOpt.setMaxConnectionNum(500);                     // 设置连接池最大连接数
        dsOpt.setInitConnectionNum(10);                     // 初始化连接池时,创建连接的数量
        dsOpt.setDeltaIncCount(10);                        // 当池中没有可用连接时,增加连接的数量
        dsOpt.setMaxIdeNum(10);                             // 周期清理多余的空闲连接时,应保留连接的数量
        dsOpt.setTimeout(5 * 1000);                         // 当已使用的连接数到达设置的最大连接数时(500),请求连接的等待时间。
        dsOpt.setAbandonTime(10 * 60 * 1000);               // 连接存活时间,当连接空闲时间超过连接存活时间,将被连接池丢弃
        dsOpt.setRecheckCyclePeriod(1 * 60 * 1000);         // 清除多余空闲连接的周期
        dsOpt.setRecaptureConnPeriod(10 * 60 * 1000);       // 检测并取回异常地址的周期

        sequoiadbDatasource = new SequoiadbDatasource(urls, Const.SEQUOIADB_USERNAME, Const.SEQUOIADB_PASSWORD, nwOpt, dsOpt); // 创建连接池
    }

    public static synchronized Sequoiadb getSequoiadb() {
        Sequoiadb sdb = null;
        try {
            sdb = sequoiadbDatasource.getConnection();
        } catch (BaseException ex) {
            System.out.println("getIdleConnNum1  " + sequoiadbDatasource.getIdleConnNum());
            System.out.println("getUsedConnNum" + sequoiadbDatasource.getUsedConnNum());
            Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
            System.out.println("getIdleConnNum2  " + sequoiadbDatasource.getIdleConnNum());
            System.out.println("getUsedConnNum" + sequoiadbDatasource.getUsedConnNum());
            Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (sdb == null) {
            while (sdb == null) {
                try {
                    semaphore.tryAcquire(1, 2, TimeUnit.SECONDS);
                } catch (InterruptedException ex) {
                    System.out.println("getIdleConnNum3  " + sequoiadbDatasource.getIdleConnNum());
                    System.out.println("getUsedConnNum" + sequoiadbDatasource.getUsedConnNum());
                    Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                    sdb = sequoiadbDatasource.getConnection();
                } catch (BaseException | InterruptedException ex) {
                    System.out.println("getIdleConnNum4  " + sequoiadbDatasource.getIdleConnNum());
                    System.out.println("getUsedConnNum" + sequoiadbDatasource.getUsedConnNum());
                    Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            semaphore.release();
            return sdb;
        }
        return sdb;
    }

    public static CollectionSpace initCollectionSpace(String csName) {
        try {
            Sequoiadb sdb = getSequoiadb();
            CollectionSpace cs;
            if (sdb.isCollectionSpaceExist(csName)) {
                cs = sdb.getCollectionSpace(csName);
            } else {
                cs = sdb.createCollectionSpace(csName);
            }
            return cs;
        } catch (BaseException ex) {
            Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
            log.debug("D:\\working\\workspace\\LF_S_SignalProc\\src\\com\\iminido\\nosql\\NoSQLDb.java initCollectionSpace 方法获取 Sequoiadb 为空");
            return null;
        }
    }

    public static DBCollection initCollection(String collectionName) {
        CollectionSpace cs = initCollectionSpace(Const.SEQUOIADB_DATABASE);
        DBCollection cl;
        if (cs.isCollectionExist(collectionName)) {
            cl = cs.getCollection(collectionName);
        } else {
            cl = cs.createCollection(collectionName);
        }
        return cl;
    }

    public static void removeAll(String collectionName) {
        DBCollection cl = initCollection(collectionName);
        cl.delete(new BasicBSONObject());
        sequoiadbDatasource.close(cl.getSequoiadb());
    }

    public static void remove(String collectionName) {
        DBCollection cl = initCollection(collectionName);
        cl.delete(new BasicBSONObject());
        sequoiadbDatasource.close(cl.getSequoiadb());
    }

    public static boolean delete(String cl, String matcher) {
        try {
            DBCollection dbc = initCollection(cl);
            dbc.delete(matcher);
            sequoiadbDatasource.close(dbc.getSequoiadb());
            return true;
        } catch (Exception e) {
            log.error("delete " + cl + "matcher=>" + matcher + "失败", e);
            return false;
        }
    }

    public static void delete(String cl, String matcher, String hint) {
        DBCollection dbc = initCollection(cl);
        dbc.delete(matcher, hint);
        sequoiadbDatasource.close(dbc.getSequoiadb());
    }

    public static boolean insert(String collectionName, String... key_val) {
        String strJson = strs2json(key_val);
        log.debug("D:\\working\\workspace\\LF_S_SignalProc\\src\\com\\iminido\\nosql\\NoSQLDb.java save=>" + strJson);
        if (strJson != null) {
            BSONObject dbo;
            try {
                dbo = (BasicBSONObject) JSON.parse(strJson); //添加异常处理 
            } catch (Exception e) {
                log.error("解析json字符串异常,传入的字符串为:" + strJson, e);
                return false;
            }

            try {
                DBCollection dbc = initCollection(collectionName);
                dbc.insert(dbo);
                sequoiadbDatasource.close(dbc.getSequoiadb());
                return true;
            } catch (Exception e) {
                return false;
            }
        }
        return false;
    }

    public static boolean insert(String collectionName, String strJson) {
        BSONObject dbo = null;
        try {
            dbo = (BasicBSONObject) JSON.parse(strJson); //添加异常处理 
        } catch (Exception e) {
            log.error("解析json字符串异常,传入的字符串为:" + strJson, e);
            return false;
        }

        DBCollection dBCollection = initCollection(collectionName);
        Object object = dBCollection.insert(dbo);
        sequoiadbDatasource.close(dBCollection.getSequoiadb());
        return true;
    }

    public static boolean insertNestJson(String collectionName, String strJson, String strJson2, String nameOfNest) {
        BSONObject dbo = null;
        try {
            dbo = (BasicBSONObject) JSON.parse(strJson); //添加异常处理 
        } catch (Exception e) {
            log.error("解析json字符串异常,传入的字符串为:" + strJson, e);
            return false;
        }

        BSONObject dbo2 = null;
        try {
            dbo2 = (BasicBSONObject) JSON.parse(strJson2); //添加异常处理 
        } catch (Exception e) {
            log.error("解析json字符串异常,传入的字符串为:" + strJson, e);
            return false;
        }

        dbo.put(nameOfNest, dbo2);

        DBCollection dBCollection = initCollection(collectionName);
        Object object = dBCollection.insert(dbo);
        sequoiadbDatasource.close(dBCollection.getSequoiadb());
        return true;
    }

    public static boolean insert(String collectionName, IstRequ requ) {
        String strJson = TL.requ2json(requ);
        BSONObject dbo = null;
        try {
            dbo = (BasicBSONObject) JSON.parse(strJson); //添加异常处理 
        } catch (Exception e) {
            log.error("解析json字符串异常,传入的字符串为:" + strJson, e);
            return false;
        }

        DBCollection dBCollection = initCollection(collectionName);
        dBCollection.insert(dbo);
        sequoiadbDatasource.close(dBCollection.getSequoiadb());
        return true ;
    }

    public static Object insert(String collectionName, IstRequ requ, String args) {
        String strJson = TL.requ2json(requ, args);
        BSONObject dbo = null;
        try {
            dbo = (BasicBSONObject) JSON.parse(strJson); //添加异常处理 
        } catch (Exception e) {
            log.error("解析json字符串异常,传入的字符串为:" + strJson, e);
        }

        DBCollection dBCollection = initCollection(collectionName);
        Object object = dBCollection.insert(dbo);
        sequoiadbDatasource.close(dBCollection.getSequoiadb());
        return object;
    }

//    public static void savej(String collectionName, IstRequ req) {
//        String strJson = req.get("j");
//        strJson = strJson.replaceAll("\'", "\""); //把单引号替换成双引号,不用这句也可以执行成功。加这句是为了让我记住json应用中存在单双引号问题,在jquery中,如果json是用单引号的话,就会出错,在php中json用单引号也会出错。
//        insert(collectionName, strJson);
//    }
    public static boolean isExist(String collectionName, String matcher) {
        if (null == queryOne(collectionName, matcher, matcher, matcher, null)) {
            return false;
        } else {
            return true;
        }
    }

    public static BSONObject queryOne(String collectionName, String matcher, String selector, String orderBy, String hint) {
        DBCollection dBCollection = initCollection(collectionName);
        BSONObject bSONObject = dBCollection.queryOne(str2BSONObject(matcher), str2BSONObject(selector), str2BSONObject(orderBy), str2BSONObject(hint), 0);
        sequoiadbDatasource.close(dBCollection.getSequoiadb());
        return bSONObject;
    }

    public static DBCursor findandclose(String collectionName, String... key_val) {
        DBCollection dBCollection = initCollection(collectionName);
        DBCursor dBCursor = dBCollection.query();
        sequoiadbDatasource.close(dBCollection.getSequoiadb());
        return dBCursor;
    }

    public static DBCursor query(String collectionName, String... key_val) {
        return initCollection(collectionName).query();
    }

    public static DBCursor query(String collectionName) {
        return initCollection(collectionName).query();
    }

    public static DBCursor query(String collectionName, String matcher, String selector, String orderBy, String hint, int limitNum) {
        return initCollection(collectionName).query(matcher, selector, orderBy, hint);
    }

    public static BasicBSONObject str2BSONObject(String jsonString) {
        return (BasicBSONObject) JSON.parse(jsonString);
    }

    public static List exec(String sql) {
        DBCursor c = null;
        Sequoiadb seq = null;
        try {
            seq = sequoiadbDatasource.getConnection();
            c = seq.exec(sql);
        } catch (BaseException e) {
            e.printStackTrace();
        } catch (InterruptedException ex) {
            Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (c != null && c.hasNext()) {
            List list = new ArrayList();
            while (c.hasNext()) {
                list.add(c.getNext());
            }
            if (seq != null) {
                sequoiadbDatasource.close(seq);
            }
            return list;
        } else {
            if (seq != null) {
                sequoiadbDatasource.close(seq);
            }
            return null;
        }
    }

    public static String exeSql(String sql) {
        return list2String(exec(sql));
    }

    public static String exe(String sql) {
        return list2String(exec(sql));
    }

    public static boolean execUpdate(String sql) {
        try {
            Sequoiadb seq = sequoiadbDatasource.getConnection();
            seq.execUpdate(sql);
            sequoiadbDatasource.close(seq);
            return true;
        } catch (BaseException e) {
            e.printStackTrace();
            log.warn(sql, e);
            return false;
        } catch (InterruptedException ex) {
            Logger.getLogger(NoSQLDb.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }

    //matcher test
    public static List query(String cl, String matcher) {
        DBCollection dbc = initCollection(cl);
        DBCursor c = dbc.query(matcher, null, null, null, 0L, 100L);
        List<String> list = null;//new ArrayList<>();
        if (c != null && c.hasNext()) {
            list = cur2list(c);
        } else {
            sequoiadbDatasource.close(dbc.getSequoiadb());
            return list;
        }
        sequoiadbDatasource.close(dbc.getSequoiadb());
        return list;

    }
    
    //matcher test
    public static List query(String cl, String matcher,String selector) {
        DBCollection dbc = initCollection(cl);
        DBCursor c = dbc.query(matcher, selector, null, null, 0L, 100L);
        List<String> list = null;//new ArrayList<>();
        if (c != null && c.hasNext()) {
            list = cur2list(c);
        } else {
            sequoiadbDatasource.close(dbc.getSequoiadb());
            return list;
        }
        sequoiadbDatasource.close(dbc.getSequoiadb());
        return list;

    }

    //returnRows test
    public static DBCursor query(String cl, String matcher, long returnRows) {
        return initCollection(cl).query(matcher, null, null, null, 0L, returnRows);
    }

    // selector {filed:1}
    public static DBCursor query(String cl, String matcher, String selector, long returnRows) {
        return initCollection(cl).query(matcher, selector, null, null, 0L, returnRows);
    }

    //orderBy {filed:1/-1}
    public static DBCursor query(String cl, String matcher, String selector, String orderBy, long returnRows) {
        return initCollection(cl).query(matcher, selector, orderBy, null, 0L, returnRows);
    }

    //hint (index) {}
    public static DBCursor query(String cl, String matcher, String selector, String orderBy, String hint, long returnRows) {
        DBCollection dbc = initCollection(cl);
        DBCursor dbcu = dbc.query(matcher, selector, orderBy, hint, 0L, returnRows);
        sequoiadbDatasource.close(dbc.getSequoiadb());
        return dbcu;
    }

    public static List query2(String cl, String matcher, String selector, String orderBy, String hint, long returnRows,List<String> list ) {
        DBCollection dbc = initCollection(cl);
        DBCursor c = dbc.query(matcher, selector, orderBy, hint, 0L, returnRows);
      
        if (c != null && c.hasNext()) {
            while (c.hasNext()) {
                String str1 = (String) c.getNext().get("acc");
                for (int j = 0; j < list.size(); j++) {
                    String str2 = list.get(j);
                    if (str2.equals(str1)) {
                        list.remove(str1);
                    }
                }
            }
        } else {
            sequoiadbDatasource.close(dbc.getSequoiadb());
            return list;//直接返回生成的推荐号
        }
        sequoiadbDatasource.close(dbc.getSequoiadb());
        return list;
    }

    public static DBCursor query(String cl, String matcher, long returnRows, long skipRows) {
        return initCollection(cl).query(matcher, null, null, null, skipRows, returnRows);
    }

    public static String query(String cl, String matcher, String selector, String orderBy, String hint, long skipRows, long returnRows) {
        DBCollection dbc = initCollection(cl);
        String jsonString = cur2jsonstr(dbc.query(matcher, selector, orderBy, hint, skipRows, returnRows));
        sequoiadbDatasource.close(dbc.getSequoiadb());
        return jsonString;
    }

    public static void update(String cl, String matcher, String modifier, String hint) {
        DBCollection dbc = initCollection(cl);
        dbc.update(matcher, modifier, hint);
        sequoiadbDatasource.close(dbc.getSequoiadb());
    }

    public static void update$unsetAll(String cl, String matcher, String field, String hint) {
        DBCollection dbc = initCollection(cl);
        dbc.update(matcher, "{$unset:" + field + ":[]}", hint); // NoSQLDb.update("friend", "{}", "{$unset:{label:[]}}", "{}");
        sequoiadbDatasource.close(dbc.getSequoiadb());
    }

    public static void update$unset(String cl, String matcher, String modifier, String hint) {
        DBCollection dbc = initCollection(cl);
        dbc.update(matcher, "{$unset:" + modifier + "}", hint); //  NoSQLDb.update("friend", "{}", "{$unset:{label:[33,44,55]}}", "{}");
        sequoiadbDatasource.close(dbc.getSequoiadb());

    }

    public static void update$addtoset(String cl, String matcher, String modifier, String hint) {
        DBCollection dbc = initCollection(cl);
        dbc.update(matcher, "{$addtoset:" + modifier + "}", hint); //    NoSQLDb.upsert("friend", "{}", "{$addtoset:{label:[33,44,55]}}", "{}");
        sequoiadbDatasource.close(dbc.getSequoiadb());
    }

    /**
     * 不存在会自动插入新记录
     *
     * @param cl
     * @param matcher
     * @param modifier
     * @param hint
     */
    public static void upsert(String cl, String matcher, String modifier, String hint) {
        DBCollection dbc = initCollection(cl);
        BSONObject ma = null;
        BSONObject mo = null;
        BSONObject hi = null;
        if (matcher != null) {
            ma = (BSONObject) JSON.parse(matcher);
        }
        if (modifier != null) {
            mo = (BSONObject) JSON.parse(modifier);
        }
        if (hint != null) {
            hi = (BSONObject) JSON.parse(hint);
        }
        dbc.upsert(ma, mo, hi);
        sequoiadbDatasource.close(dbc.getSequoiadb());

    }

    public static String strs2json(String... key_val) {
        String strJson = null;
        if (key_val != null) {
            StringBuilder sb = new StringBuilder();
            sb.append("{");
            int i = 0;
            while (key_val[i] != null) {
                sb.append(key_val[i]).append(":'").append(key_val[++i]).append("'");
                if (i < key_val.length - 1) {
                    sb.append(",");
                    i++;
                } else {
                    key_val[i] = null;
                }
            }
            sb.append("}");
            strJson = sb.toString();

        }
        return strJson;
    }

    public static List cur2list(DBCursor c) {
        if (c != null && c.hasNext()) {
            List list = new ArrayList();
            while (c.hasNext()) {
                list.add(c.getNext());
            }

            return list;
        }
        return null;
    }

    public static String cur2jsonstr(DBCursor c) {
        String jsonString = "";
        if (c != null && c.hasNext()) {
            while (c.hasNext()) {
                jsonString = jsonString + (c.getNext().toString());
            }
            c.close();
            return jsonString;
        }
        return "{}";
    }

    private static String list2String(List list) {
        if (list != null) {
            StringBuilder sb = new StringBuilder();
            list.stream().forEach((Object s) -> {
                sb.append(s).append(",");
            });
            return sb.toString();
        } else {
            return null;
        }

    }

    public static void main(String[] args) {
//        NoSQLDb.insertNestJson(Const.TEST, "{a:'a'}","{cc:'dd'}","nestJson");

        String s = "{ \"_id\": { \"$oid\": \"544634608e849c2f20465015\" }, \"a\": \"a\", \"nestJson\": { \"cc\": \"dd\" } }";
        s = s.replace("\\", "");
        SU.parseJSON2Map(s);

    }
}

 

分享到:
评论

相关推荐

    sequoiadb java所用依赖jar包

    这个jar包是SequoiaDB官方提供的Java API,允许Java开发者通过编程方式与SequoiaDB数据库进行通信,执行CRUD(创建、读取、更新、删除)操作以及复杂的查询。 SequoiaDB 2.6版是该数据库系统的一个较新版本,可能...

    SequoiaDB_架构指南

    ### SequoiaDB_架构指南知识点 #### 一、简介 **SequoiaDB(巨杉数据库)**是一款分布式非关系型文档数据库,专为处理海量非关系型数据设计。其核心特点在于分布式架构、高可用性、高性能及对动态数据类型的强大...

    SequoiaDB架构指南.pdf

    运行应用程序时,开发者需利用SequoiaDB提供的API或SQL接口进行数据操作,同时考虑负载均衡和故障恢复策略。 1.1 如何搭建应用程序 - 首先,根据需求规划硬件资源,设置合适的存储节点、计算节点和管理节点。 - ...

    分布式数据库 SequoiaDB 初步认识.rar

    4. SQL支持:SequoiaDB提供了SQL接口,用户可以通过标准SQL语句进行数据操作,降低了使用复杂分布式数据库的学习成本。 二、SequoiaDB的工作原理 1. 数据分布与复制:SequoiaDB将数据按预设的策略分片,并在集群中...

    SequoiaDB巨杉数据库整体框架.pdf

    SequoiaDB巨杉数据库是分布式数据库的代表之一,由两个主要模块构成:数据库存储引擎与数据库实例。这两个模块在功能上相互独立,共同构建了整个SequoiaDB巨杉数据库的运作机制和体系架构。 数据库存储引擎是整个...

    国产操作系统的生态与发展之路.pdf

    文章提到了多位国产操作系统的代表性人物和项目,例如王涛的巨杉数据库(SequoiaDB)、魏永明的HybridOS、熊谱翔的RT-Thread、江大勇的OpenEuler、韩辉的SylixOS以及刘闻欢的Deepin等。这些人物和项目代表了中国在...

    SequoiaDB+SparkSQL在数据统计场景的应用

    SequoiaDB在分布式存储上提供了丰富的数据切分规则,如水平切分、范围切分、多维分区和多维切分,这些策略能够根据不同的业务需求提升存储和操作性能。而Spark作为一款快速、通用、可扩展的计算系统,自Spark 1.0...

    巨杉数据库分布式兼容工具 SequoiaSQL包含数据库SequoiaDB的SQL引擎以及各种SQL语法协议的解析器 .rar

    支持 AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows 等多种操作系统。 为多种编程语言提供了 API。这些编程语言包括 C、C++、C#、Delphi、...

    分布式数据库架构设计.pptx

    同时,SequoiaDB 也支持多表关联和跨表跨节点事务操作,满足复杂的业务需求。 此外,SequoiaDB 也提供了高性能的数据查询解决方案,支持多种数据模型和数据应用场景。SequoiaDB 的HTAP(Hybrid Transactional and ...

    新一代NewSQL数据库架构与实现.pptx

    其架构设计包括主从复制和多活架构,允许每个服务进行读写操作。 8. **内部设计解析**:SequoiaDB的内部结构包括SQL解析区、数据存储区、元数据管理区、协调节点等,每个组件都有明确的职责,如Handler Adapter负责...

    分布式数据库助力银行前台业务智慧化转型.docx

    在SequoiaDB 3.0中,通过对象存储API和Posix文件系统接口,无缝对接各类操作系统,无需改动应用程序即可实现从传统NAS向SequoiaDB的迁移。 LOB存储结构包括元数据文件和数据文件,元数据文件存储元数据信息,数据...

    sdbmigrationtool:SequoiaDB数据库集合间数据迁移工具,支持结构化,半结构化和Lob对象的迁移,提供多线程,限速,校验,修复功能

    sdbmigrationtool SequoiaDB数据库集合间数据迁移工具,支持结构化,半结构化和Lob对象的迁移,提供多线程,限速,校正,修复功能。当前版本支持功能如下:提供多线程并发功能支持输出迁移速率的统计信息结构化,半...

    数据湖及巨杉数据平台.pdf

    SequoiaSQL作为SQL接口,为用户提供了与标准SQL2003兼容的查询能力,方便了数据操作。HDFS和SequoiaDB分别负责分布式存储和数据库功能,而Spark则用于高性能计算,包括批处理和实时处理。此外,SequoiaDB支持多种...

    巨衫数据库在K1 Powerlinux的压力测试.docx

    SequoiaDB巨杉数据库,作为一款开源的金融级分布式关系型数据库,其设计目标是为高并发的联机交易场景提供高效、稳定且可无限水平扩展的服务。它支持MySQL、PostgreSQL、SparkSQL的关系型数据库实例,以及类MongoDB...

    大数据平台架构.pdf

    数据接口层是原始数据进入大数据库的入口,需要针对不同类型的数据开发接口,进行数据的缓冲、预处理等操作。平台架构层是基于大数据系统存储各类数据,进行处理和分析。分析工具层提供各种数据分析工具,例如建模...

    分布式数据库架构创新.pptx

    例如,SequoiaDB是一个MySQL分布式数据库,它实现了100%的MySQL兼容性,同时具备弹性扩张能力和多活架构,允许每个服务节点进行读写操作。 SequoiaDB的内部设计包括多个模块,如Handler Adapter用于适配MySQL接口,...

    大数据技术分享 NewSQL数据库技术与应用 共55页.pdf

    - **复杂查询的性能问题**:JOIN操作等复杂查询导致性能下降。 ##### 2. **解决方案** - **水平扩展**:通过增加更多的低成本服务器节点来提高存储容量和处理能力。 - **分布式存储**:采用多份数据复制的方式保证...

    分布式事务演进.rar

    近年来,分布式数据库系统如TiDB、SequoiaDB等开始支持分布式事务,并且引入了新的事务模型,如Multi-Paxos、MVCC(多版本并发控制)等。这些系统在保证事务一致性的同时,提供了更好的性能和可扩展性。 此外,...

    2021中国开源发展蓝皮书92页.pdf

    近年来我国开源企业及开发者逐渐深入深度信息技术领域的创新,涌现出如 OpenHarmony(鸿蒙)、RT-Thread、OpenEuler、PaddlePaddle、TiDB、Kyligence、巨杉SequoiaDB、易观Dolphin Scheduler、涛思数据TDengine等...

Global site tag (gtag.js) - Google Analytics