Azure-sdk-for-net: September Release of Tables for .NET

Created on 17 Jul 2020  路  18Comments  路  Source: Azure/azure-sdk-for-net

Client Epic Tables

Most helpful comment

@kieronlanning I see batching called out in the list of open items targeting the next beta. https://github.com/Azure/azure-sdk-for-net/labels/Tables

All 18 comments

Is this for the replacement to https://www.nuget.org/packages/Microsoft.Azure.Cosmos.Table/2.0.0-preview?

Falling inline with the Azure.Storage.XXX packages?

@kieronlanning yes, this is the replacement for that one and the one that was in the WindowsAzure.Storage package. It will have the option of being backed by Storage or Cosmos and should unify a lot of the fracturing in this space that has occurred. It will follow the new guidelines for Azure SDK libraries.

@Petermarcu Awesome, thanks for the speedy response.

@Petermarcu / @christothes tagging you both as you've all been active in this thread.

I'm glad to see this has a beta release now, I'm working on upgrading a few projects that have Table Storage (not Cosmos-based) at their core. Some storing several gigabytes of data per-table for different clients of mine.

I checked to see if there's an updated emulator, as a lot of the environment and integration tests we have depend on the emulator when running locally, and I was a little taken-a-back when I saw that the Azure Storage Emulator was effectively mothballed in favour of Azurite which doesn't support Table Storage emulation.

This feels like another kick in the teeth for Azure Storage based Tables.

Is there a single source of publicly available information about the future of Table Storage, especially around the availability of SDKs and emulation?

Additionally, in the Microsoft.Azure.Cosmos.Table package I could do a Retrieve operation with only the PK/ RK as the selected columns as a quick means of testing to see if an entity existed. In the new API (Azure.Data.Tables) what's the recommended practice for doing the same?

Thanks for the feedback. I'll follow up on the Emulator question. Its a good one. Thanks for pointing that out. I'll let others answer the Retrieve question.

Hi @kieronlanning -
Although table storage is not currently available in Azurite, support for it is currently under active development. You can see the backlog here

Regarding an equivalent of the Retrive method, the closest equivalent is GetEntity, which can be found on the TableClient here. We'd love any feedback you have about the usability of this new method. Feel free to file a new issue if you have any specific feedback.

Thanks @Petermarcu and @christothes.

GetEntity/ GetEntityAsync will get the _entire_ entity though...the shortcut previously was just do a retrieve with the PartitionKey as the only column returned (just checked the codebase, and it's PK only, not PK and RK as I'd previously said, sorry).

The equivalent in a RESTful API would be doing a HEAD request, does the same exist in the API as it stands currently - even if it's not surfaced in the SDK?

Is there a timeframe on the emulator to get full Azure Storage Table Support?

I see it supports Docker, which is great... assuming that's Docker for... Linux? How does that marry up with running the CosmosDb emulator which is a Windows Docker image?

... also, where is the batch support in this API?

I'm lost without it.

@kieronlanning I see batching called out in the list of open items targeting the next beta. https://github.com/Azure/azure-sdk-for-net/labels/Tables

GetEntity/ GetEntityAsync will get the _entire_ entity though...the shortcut previously was just do a retrieve with the PartitionKey as the only column returned (just checked the codebase, and it's PK only, not PK and RK as I'd previously said, sorry).

I created #15144 to track this. I'd love to learn more about the scenarios where you'd want to check for an entity's existence. Would you mind taking the conversation over to that issue?

Azurite Tables Support is in the works, but we do not have a timeline as it is a grassroots effort and open source. Chris pointed to the backlog above. You can run Azurite in a linux container docker run -p 10000:10000 -p 10001:10001 mcr.microsoft.com/azure-storage/azurite

Cosmos Emulator Linux Container issue is here: https://github.com/Azure/azure-cosmos-db-emulator-docker/issues/17 and a UV here: https://feedback.azure.com/forums/263030/suggestions/18533509 - the current workaround is to run it in a VM. https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#running-on-mac-or-linux

I'm asking around to see if I can get more info on that.

GetEntity/ GetEntityAsync will get the _entire_ entity though...the shortcut previously was just do a retrieve with the PartitionKey as the only column returned (just checked the codebase, and it's PK only, not PK and RK as I'd previously said, sorry).

I created #15144 to track this. I'd love to learn more about the scenarios where you'd want to check for an entity's existence. Would you mind taking the conversation over to that issue?

_Done!_

@jongio Thanks! Is there a drive to consolidate emulation for various parts of Azure into a single set? Things like Redis and Mongo could be included by simply spinning up containers. It would be nice to include things like Azure Storage and CosmosDb in a single place. When I used to commute a lot where reception is non-existant, the emulators were invaluable.

Not currently, but there are a few of us here who are also passionate about completely disconnected dev exp. My energy is going into getting Tables into Azurite and then we'll go from there.

@jongio Thanks for the update. Tables support is top of my list for sure, but a better local development experience, and/ or one that can be used in a CI/ CD pipeline for automated testing too.

@Petermarcu Is Upserting intentionally missing from TableTransactionalBatch?

@christothes - Can you help with that question?

@kieronlanning Upsert support is something we could add. Would you mind creating a separate issue to track this?

@christothes Done. #16250

Thanks!

Was this page helpful?
0 / 5 - 0 ratings