如何使用Iveely的数据存储引擎 Iveely Database

     Iveely 数据存储引擎是为Iveely 搜索引擎提供数据存储的机制。

     适用于:频繁数据插入、数据读取。数据更改或者删除数据不适合Iveely Database,存储结构是按照搜索引擎数据存储要求(频繁读、频繁写、几乎无删)设计,因此不是所有的数据存储都可以用Iveely Database。

     安装部署

     

     在下载的Iveely database中,只需要启动RunDatabase.bat,Linux下,直接启动Iveely.Database.jar,启动后,打开UI下的index.html即可看到所有当前数据存储中的数据库、表、数量等等信息。

     

     如果UI能够正常显示,则说明数据引擎已经正常启动。

     Iveely Database有两种使用方式,一个是本地应用模式,类似于access等本地数据存储,还有一个是网络远程模式,根据IP和端口号存储数据。两者均需要添加lib:Iveely.Database.jar。

     本地模式

 public void localMode() {
        // 1. Create warehouse.
        Warehouse warehouse = LocalStore.getWarehouse("iveely_test");

        // 2. Create table.
        warehouse.createTable("MyTableName");
        warehouse.createColumn("MyTableName", "MyId", Types.INTEGER, true);
        warehouse.createColumn("MyTableName", "MyColumnA", Types.STRING, false);
        warehouse.createColumn("MyTableName", "MyColumnB", Types.DOUBLE, false);

        // 3. Insert data.
        int recordId = warehouse.insert("MyTableName", new Object[]{1, "this is for MyColumnA", 0.8});

        // 4. Select data.
        Object[] obj = warehouse.selectById("MyTable", recordId);
        System.out.println(obj[1]);
    }

     远程模式

     默认远程访问端口号:4321。代码使用示例如下:

    public void remoteMode() {

        // 1. Create connector.
        DbConnector connector = new DbConnector("iveely_text", "127.0.0.1", 4321);

        // 2. Create table.
        boolean isTableCreated = connector.createTable("MyTableName",
                new String[]{"MyId", "MyColumnA", "MyColumnB"},
                new Types[]{Types.INTEGER, Types.STRING, Types.DOUBLE},
                new boolean[]{true, false, false});
        if (isTableCreated) {
            
            // 3. Insert data.
            int recordId = connector.insert("MyTableName", new Object[]{1, "this is for MyColumnA", 0.8});
            System.out.println(recordId);
            
            // 4. Select Data.
            Object[] obj = connector.selectOne("MyTableName", recordId);
            System.out.println(obj[1]);
        }
    }

    示例中是单个数据的写入和读取,实际上,也是支持批量写入和批量读取的。

    上面只是简单示例,如果有疑问,请邮件我:liufanping@iveely.com。

    背景参考:开源搜索引擎Iveely 0.8.0 发布,终见天日

posted @ 2015-05-12 08:27  Iveely Liu  阅读(1142)  评论(0编辑  收藏  举报