AsterixDB初识

[复制链接]
发表于 2024-5-21 01:50:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
基本概念

背景启动AsterixDB
  1. cd ~/asterixdb/asterixdb/asterix-server/target/asterix-server-0.9.10-SNAPSHOT-binary-assembly/apache-asterixdb-0.9.10-SNAPSHOT/opt/local/bin
  2. ./start-sample-cluster.sh
复制代码
修改AsterixDB代码后,调试AsterixDB;启动/asterixdb/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
AsterixDB操作流程


  • 创建Dataverse
    CREATE DATAVERSE Traffic IF NOT EXISTS;
  • 使用Dataverse【每一条语句之前执行】
    USE Traffic;
  • 设置存储范例(B-tree, R-tree等)
    1. CREATE TYPE TrafficRecordType AS {
    2.     Vehicle_ID: int,
    3.     v_Vel: float,
    4.     Location: string
    5. };
    复制代码
  • 创建数据库
    1. // 设置单一主键
    2. CREATE DATASET TrafficRecords(TrafficRecordType)
    3. PRIMARY KEY Vehicle_ID;  
    4. // Choose an appropriate primary key
    5. // 设置复合主键
    6. CREATE DATASET traffic_CSV_set(TrafficRecordType)
    7. PRIMARY KEY Vehicle_ID, Frame_ID;
    复制代码
  • 创建索引(default: B-tree;可指定为R-tree)
    1. // 在TrafficRecords【dataset】上的GeoLocation字段,建立R-tree索引,名为TrafficRecords_Rtree
    2. create index TrafficRecords_Rtree on TrafficRecords(GeoLocation) type RTREE;
    复制代码
  • 导入数据(三种方式:直接插入,导入csv文件,转化为ADM格式数据导入)
    1.    // insert 数据
    2.    insert into TestPoint ({
    3.        "Vehicle_ID":1,
    4.        "v_Vel": 2.2,
    5.        "Location": "this is a String."
    6.    });
    7.    
    8.   // 导入csv数据,csv中仅能使用int、double等基本类型
    9.   LOAD DATASET TrafficRecords USING localfs
    10.       (("path"="127.0.0.1:///path/data.csv"),
    11.        ("format"="delimited-text"),
    12.        ("delimiter"=","),
    13.        ("quote"="""),
    14.        ("header"="true"));
    15.      
    16.   // 导入ADM格式数据
    17.   LOAD DATASET Exper2 USING localfs    (("path"="127.0.0.1:///path/data.adm"),
    18.    ("format"="adm"));
    19.    
    复制代码
  • 查询,验证数据是否导入
    1. SELECT * FROM TrafficRecords;
    复制代码
基本操作


  • 删除数据范例或dataset

    • dataType 由 dataset 使用,因此在删除时需要先删除 dataset , 再删除 dataType
    • 删除dataset drop dataset TrafficRecords;
    • 删除dataType drop type TrafficRecordType;

  • upsert语法,更新
    1. upsert into TrafficLSMRTree_1 ({
    2.     "Vehicle_ID": 1,
    3.     "Frame_ID": 271,    // 将该值由270更新为271
    4.     "Total_Frames": 569
    5. });
    复制代码
  • delete记录
    1. delete from TrafficLSMRTree_1
    2.     where Combined_ID_Time = "1,1118847869000";
    复制代码
  • 插入空间数据
    1. ...
    2. // datatype
    3. create type pointType AS{
    4.     Vehicle_ID: int,
    5.     GeoLocation: point
    6. };
    7. create dataset TestPoint(pointType)
    8.     primary key Vehicle_ID;
    9. insert into TestPoint ({
    10.     "Vehicle_ID":1,
    11.     "GeoLocation":point("5.2,10.2")
    12. });
    13. ...
    14. -----------------------------------
    15. GeoLocation格式:
    16. "GeoLocation":point(5.2,10.2)      N
    17. "GeoLocation":point("5.2","10.2")  N
    18. "GeoLocation":point("5.2,10.2")    Y
    19. -----------------------------------
    20. 不能导入含有point数据的csv文件
    复制代码
  • ADM格式数据(JSON串)
    1. // adm数据示例:
    2.     [{
    3.         "Vehicle_ID": 809,
    4.         "v_Vel": 53.5,
    5.         "Combined_ID_Time": "809,1118847220800",
    6.         "GeoLocation": point("6452727.119,1871874.94")
    7.     }]
    复制代码
数据读取

<ol>按照数据写入时的时间戳进行读取数据
[code]USE TrafficUS101; SELECT *FROM TrafficLSMRTree_1WHERE Global_Time >= 1118847890000 AND Global_Time
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表