首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云环境中的数据操作

云环境中的数据操作
EN

Stack Overflow用户
提问于 2012-05-18 00:49:43
回答 5查看 517关注 0票数 1

我对在云存储服务中访问和处理数据有一些疑问。

1.有没有什么我可以用来为主流云存储提供商(亚马逊s3,谷歌云存储,微软Azure..Please )编写应用程序的通用API指出我在列表中遗漏的提供商。我只专注于企业域,而不是个人存储)

2.现在是sdk部分。如果我想要编写一个用iCloud处理数据的应用程序(比方说一个j2ee应用程序),iCloud sdk是否为我提供了这种灵活性?

3.云存储服务会为我提供事务支持吗?我的意思是对ACID properties.Or的支持,我必须对此负责?

EN

回答 5

Stack Overflow用户

发布于 2012-05-29 15:52:58

  • jClouds提供了一个很好的存储抽象。它支持许多最常用的云存储提供商,包括亚马逊s3、微软Azure等。有关存储提供商的列表,请参阅此处:http://www.jclouds.org/documentation/reference/supported-providers

下面是如何使用jClouds存储上下文:

代码语言:javascript
复制
    import static 
        org.jclouds.aws.s3.options.PutObjectOptions.Builder.withAcl;

    // get a context with amazon that offers the portable BlobStore API
    BlobStoreContext context = new BlobStoreContextFactory().
                         createContext("aws-s3", accesskeyid, secretkey);

    // create a container in the default location
    BlobStore blobStore = context.getBlobStore();
    blobStore.createContainerInLocation(null, bucket);

    // add blob
    Blob blob = blobStore.newBlob("test");
    blob.setPayload("test data");
    blobStore.putBlob(bucket, blob);

    // when you need access to s3-specific features,
    // use the provider-specific context
    AWSS3Client s3Client =
         AWSS3Client.class.cast(context.getProviderSpecificContext().getApi());

    // make the object world readable
    String publicReadWriteObjectKey = "public-read-write-acl";
    S3Object object = s3Client.newS3Object();

    object.getMetadata().setKey(publicReadWriteObjectKey);
    object.setPayload("hello world");
    s3Client.putObject(bucket, object, withAcl(CannedAccessPolicy.PUBLIC_READ));

    context.close();

  • 不是一个真正的iCloud专家,但我的印象是它只用于各种苹果产品,而不是一个通用的平台,正如之前的回答中提到的那样。
  • 云存储服务通常不提供ACID属性。你正在寻找的听起来更像是一些云数据库服务-亚马逊SimpleDBRDS,MS SQL Azure等。你可以使用JDBC驱动程序来连接其中的一些。但这些不是“存储”服务--它们是在云中运行的数据库,每个数据库都有自己的语义。
票数 2
EN

Stack Overflow用户

发布于 2012-05-18 01:34:45

任何云服务提供商的基础都是使用REST接口。您可以使用任何语言包装REST请求,只要该语言支持网络和PKI安全基础设施。所有现代语言都有这样的功能。

在大多数情况下,任何SDK都只是这些REST接口的包装器,所以您可以非常容易地编写编码器和同步或异步方式,并获得您正在寻找的东西。SDK只是将工作加速到多方面,与直接使用REST相比。这并不意味着你不能使用REST direclty,它只是一个SDK,帮助你连接到特定的云服务。

SDK是如何实现的,它提供了什么类型的功能,不同的提供商和他们拥有的服务是不同的。您不能使用endpoints SDK for Amazon Cloud,因为内部服务连接终结点和底层接口封装在SDK本身中。这并不意味着不能创建一个SDK来连接所有云服务提供商,但是每个云服务提供商都为其云服务提供了个性化的SDK。

云服务为您的用户提供基础架构和平台来部署他们的应用程序和关于ACID,您将不得不处理应用程序级别的工作,但是ACID可能是一个完全独立和冗长的讨论。

票数 1
EN

Stack Overflow用户

发布于 2012-05-18 10:21:17

关于你的3个问题:

  1. 这并不是一个具体的编程问题,更像是对可用产品的调查。
  2. 我确信所有的云提供商都提供了不同的关系型和非关系型数据存储,每一个都有自己的事务支持(或缺乏)。
  3. 我不知道有什么特别的库可以提供一个完全通用的接口,用于存储和同步Mac / iPad / iPod内容,而不是一个计算平台。在Windows Azure中,除了分布式事务之外,SQL Azure还提供了类似于SQL Server的ACID支持。Windows Azure表存储在给定分区内提供原子操作,因此,只要您的多记录写入被写入到相同的分区,这可以在一个原子操作中完成。SQL Azure以及Windows Azure存储(blobs、表和队列)被认为是持久的,因为存储是三重复制以实现冗余(并且Windows Azure存储也是geo-replicated).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10639985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档