Azure DocumentDB 试水

通过maven库查找,找到Azure DocumentDB的对应的SDK java jar.

        <!-- azure-documentdb -->
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>azure-documentdb</artifactId>
            <version>1.9.4</version>
        </dependency>

通过查看得知依赖关系:

  • Apache Commons Lang
  • Apache HttpClient
  • Apache HttpCore
  • Jackson Data Mapper
  • JSON
  • JUnit
  • mockito

#1.建立数据库,集合 首先需要从Azure云上获取到DocumentDB的END_POINT和MASTER_KEY(分为读写key和只读key).

        // 初始化一个DocumentClient实例,用于操作Azure DocumentDB
        DocumentClient documentClient = new DocumentClient(
                END_POINT,
                MASTER_KEY,
                ConnectionPolicy.GetDefault(),
                ConsistencyLevel.Session);

        // 创建数据库
        Database myDatabase = new Database();
        myDatabase.setId(DATABASE_ID);
        myDatabase = documentClient.createDatabase(myDatabase, null).getResource();

        // 创建集合
        DocumentCollection myCollection = new DocumentCollection();
        myCollection.setId(COLLECTION_ID);
        // 设置吞吐量为 1000 RUs.
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.setOfferThroughput(1000);
        myCollection = documentClient.createCollection(
                myDatabase.getSelfLink(),
                myCollection,
                requestOptions).getResource();

只是通过API可以进行创建,但实际上,最好在Azure云上直接手动进行创建,创建过程中需要选择相关的价格.所以我选择在程序中不创建数据库以及集合.

#2 .插入数据 创建数据,需要的角色为DocumentClient,DataBase,Colliection. 因此,我们创建以下3个测试用的工具方法


    public static DocumentClient getDocumentClient() {

        return new DocumentClient(END_POINT, MASTER_KEY, ConnectionPolicy.GetDefault(), ConsistencyLevel.Session);
    }

    public static Database getDatabase(DocumentClient documentClient, String dataBaseId) throws Exception {

        String querySql = "SELECT * FROM root r WHERE r.id=" + dataBaseId;
        List<Database> databaseList = documentClient.queryDatabases(querySql, null).getQueryIterable().toList();
        if (!databaseList.isEmpty()) {
            return databaseList.get(0);
        } else {
            throw new Exception("Database does not exist.");
        }
    }

    public static DocumentCollection getDocumentCollection(DocumentClient documentClient, Database database, String collectionId) throws Exception {
        String querySql = "SELECT * FROM root r WHERE r.id=" + collectionId;
        List<DocumentCollection> documentCollectionList = documentClient.queryCollections(database.getSelfLink(), querySql, null)
                .getQueryIterable().toList();
        if (!documentCollectionList.isEmpty()) {
            return documentCollectionList.get(0);
        } else {
            throw new Exception("DocumentCollection does not exist.");
        }
    }

下面是插入数据的main方法:

import com.microsoft.azure.documentdb.Database;
import com.microsoft.azure.documentdb.Document;
import com.microsoft.azure.documentdb.DocumentClient;
import com.microsoft.azure.documentdb.DocumentCollection;

/**
 * This file created by ZhaoQian on 2017/1/10 14:35.
 */
public class InsertDataTest {

    public static void main(String[] args) throws Exception {

        DocumentClient documentClient = DocumentDBUtils.getDocumentClient();
        Database database = DocumentDBUtils.getDatabase(documentClient, DocumentDBUtils.DATABASE_ID);
        DocumentCollection documentCollection = DocumentDBUtils.getDocumentCollection(documentClient, database, DocumentDBUtils.COLLECTION_ID);

        String jsonString = "{\"id\":\"003\" ,\"firstName\": \"Credo\", \"lastName\":\"Zhao\", \"email\": \"credo@gmail.com\" }";
        Document document = new Document(jsonString);
        try {
            documentClient.createDocument(documentCollection.getSelfLink(), document, null, false);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

log日记输入是一对的HTTP信息.这表明微软的这个jar是用HTTP POST推送信息到documentDB中.

#3. 查询数据 代码如下:

import com.microsoft.azure.documentdb.Database;
import com.microsoft.azure.documentdb.Document;
import com.microsoft.azure.documentdb.DocumentClient;
import com.microsoft.azure.documentdb.DocumentCollection;

import java.util.List;

/**
 * This file created by ZhaoQian on 2017/1/10 15:22.
 */
public class TestQueryData {

    public static void main(String[] args) throws Exception {
        DocumentClient documentClient = DocumentDBUtils.getDocumentClient();
        Database database = DocumentDBUtils.getDatabase(documentClient, DocumentDBUtils.DATABASE_ID);
        DocumentCollection documentCollection = DocumentDBUtils.getDocumentCollection(documentClient, database, DocumentDBUtils.COLLECTION_ID);

        //Document document=DocumentDBUtils.getDocumentById(documentClient,documentCollection,"001");
        //System.out.println(document);

        List<Document> documentList = documentClient
                .queryDocuments(documentCollection.getSelfLink(),
                        "SELECT * FROM c", null)
                .getQueryIterable().toList();
        for(Document temp:documentList){
            System.out.println(temp);
        }

    }
}

输入结果为:

{"firstName":"Credo","lastName":"Zhao","_attachments":"attachments/","_rid":"1UAxAIjCGwABAAAAAAAAAA==","id":"001","_self":"dbs/1UAxAA==/colls/1UAxAIjCGwA=/docs/1UAxAIjCGwABAAAAAAAAAA==/","email":"credo@gmail.com","_etag":"\"0300d513-0000-0000-0000-58748af10000\"","_ts":1484032749}
{"firstName":"Credo","lastName":"Zhao","_attachments":"attachments/","_rid":"1UAxAIjCGwADAAAAAAAAAA==","id":"002","_self":"dbs/1UAxAA==/colls/1UAxAIjCGwA=/docs/1UAxAIjCGwADAAAAAAAAAA==/","email":"credo@gmail.com","_etag":"\"03008520-0000-0000-0000-58748da70000\"","_ts":1484033443}
{"firstName":"Credo","lastName":"Zhao","_attachments":"attachments/","_rid":"1UAxAIjCGwAEAAAAAAAAAA==","id":"003","_self":"dbs/1UAxAA==/colls/1UAxAIjCGwA=/docs/1UAxAIjCGwAEAAAAAAAAAA==/","email":"credo@gmail.com","_etag":"\"03005a2e-0000-0000-0000-587490e80000\"","_ts":1484034276}

转载于:https://my.oschina.net/zhaoqian/blog/822239

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值