我对在云存储服务中访问和处理数据有一些疑问。
1.有没有什么我可以用来为主流云存储提供商(亚马逊s3,谷歌云存储,微软Azure..Please )编写应用程序的通用API指出我在列表中遗漏的提供商。我只专注于企业域,而不是个人存储)
2.现在是sdk部分。如果我想要编写一个用iCloud处理数据的应用程序(比方说一个j2ee应用程序),iCloud sdk是否为我提供了这种灵活性?
3.云存储服务会为我提供事务支持吗?我的意思是对ACID properties.Or的支持,我必须对此负责?
发布于 2012-05-29 15:52:58
下面是如何使用jClouds存储上下文:
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();发布于 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可能是一个完全独立和冗长的讨论。
发布于 2012-05-18 10:21:17
关于你的3个问题:
https://stackoverflow.com/questions/10639985
复制相似问题