DOTYCZY: Stół
Porównanie usługi Azure Cosmos DB dla tabel i usługi Azure Table Storage
Gdzie jest interfejs API dla tabeli, który nie jest identyczny z zachowaniem usługi Azure Table Storage?
Istnieją pewne różnice w zachowaniu, które użytkownicy pochodzący z usługi Azure Table Storage, którzy chcą tworzyć tabele za pomocą usługi Azure Cosmos DB dla tabel, powinni mieć świadomość:
Usługa Azure Cosmos DB dla tabeli używa modelu pojemności zarezerwowanej w celu zapewnienia gwarantowanej wydajności, ale oznacza to, że płaci za pojemność natychmiast po utworzeniu tabeli, nawet jeśli pojemność nie jest używana. W przypadku usługi Azure Table Storage płaci się tylko za używaną pojemność. Pomaga to wyjaśnić, dlaczego interfejs API dla tabeli może oferować umowę SLA odczytu 10 ms i 15 ms zapisu w 99. percentylu, podczas gdy usługa Azure Table Storage oferuje 10-sekundową umowę SLA. Jednak w związku z interfejsem API tabel tabel, nawet pustymi tabelami bez żadnych żądań, kosztują pieniądze, aby zapewnić dostępność pojemności do obsługi żądań do nich w ramach umowy SLA oferowanej przez usługę Azure Cosmos DB.
Wyniki zapytań zwracane przez interfejs API dla tabeli nie są sortowane w kolejności klucza partycji/klucza wiersza, ponieważ znajdują się w usłudze Azure Table Storage.
Klucze wierszy mogą zawierać maksymalnie 255 bajtów.
Partie mogą mieć maksymalnie 2 MB.
Mechanizm CORS nie jest obecnie obsługiwany.
Nazwy tabel w usłudze Azure Table Storage nie są uwzględniane wielkości liter, ale znajdują się w usłudze Azure Cosmos DB dla tabel.
Niektóre wewnętrzne formaty usługi Azure Cosmos DB na potrzeby kodowania informacji, takich jak pola binarne, nie są obecnie tak wydajne, jak to może się podobać. W związku z tym może to spowodować nieoczekiwane ograniczenia dotyczące rozmiaru danych. Na przykład obecnie nie można użyć pełnej jednostki Meg jednostki tabeli do przechowywania danych binarnych, ponieważ kodowanie zwiększa rozmiar danych.
Usługa Azure Cosmos DB rezerwuje nazwy
ID
właściwości jednostki ,rid
,etag
iResourceId
i nie są obecnie obsługiwane.Funkcja TableQuery TakeCount nie jest ograniczona do 1000.
Jeśli chodzi o interfejs API REST, usługa Azure Table Storage (ale nie usługa Azure Cosmos DB dla tabeli) obsługuje następujące opcje punktów końcowych/zapytań:
Metody REST Opcja punktu końcowego/zapytania REST Adresy URL dokumentu Wyjaśnienie Obsługiwane w usłudze Table Storage Obsługiwane w interfejsie API dla tabeli GET
,PUT
/?Restype=service@comp=properties
Ustawianie właściwości usługi Table Service i pobieranie właściwości usługi Table Service Ten punkt końcowy służy do ustawiania reguł CORS, konfiguracji analizy magazynu i ustawień rejestrowania. Mechanizm CORS nie jest obecnie obsługiwany, a analiza i rejestrowanie są obsługiwane inaczej w usłudze Azure Cosmos DB niż tabele usługi Azure Storage Tak Nie. OPTIONS
/<table-resource-name>
Wstępne żądanie tabeli CORS Jest to część mechanizmu CORS, którego usługa Azure Cosmos DB obecnie nie obsługuje. Tak Nie. GET
/?Restype=service@comp=stats
Pobieranie statystyk usługi Table Service Zawiera informacje na temat szybkiego replikowania danych między podstawowymi i pomocniczymi. Nie jest to wymagane w usłudze Azure Cosmos DB, ponieważ replikacja jest częścią operacji zapisu. Tak Nie. GET
,PUT
/mytable?comp=acl
Pobieranie listy ACL tabel i ustawianie listy ACL tabel Spowoduje to pobranie i ustawienie przechowywanych zasad dostępu używanych do zarządzania sygnaturami dostępu współdzielonego (SAS). Tak Nie. Usługa Azure Cosmos DB dla tabeli obsługuje tylko format JSON, a nie ATOM.
W szczególności w przypadku zestawu .NET SDK istnieją pewne klasy i metody, których usługa Azure Cosmos DB obecnie nie obsługuje.
- CloudTableClient, klasa
\ServiceProperties
\ServiceStats
- CloudTable, klasa
SetPermissions
GetPermissions
- CloudTableClient, klasa
Inne często zadawane pytania
Czy do korzystania z interfejsu API dla tabeli potrzebuję nowego zestawu SDK?
Nie, istniejące zestawy SDK magazynu powinny nadal działać. Jednak zaleca się, aby zawsze pobierać najnowsze zestawy SDK w celu uzyskania najlepszej obsługi i w wielu przypadkach lepsza wydajność. Zobacz listę dostępnych języków w temacie Wprowadzenie do usługi Azure Cosmos DB dla tabeli.
Jaka jest parametry połączenia, której muszę użyć do nawiązania połączenia z interfejsem API dla tabeli?
Parametry połączenia to:
DefaultEndpointsProtocol=https;AccountName=<AccountNamefromCosmosDB;AccountKey=<FromKeysPaneofCosmosDB>;TableEndpoint=https://<AccountName>.table.cosmosdb.azure.com
Możesz uzyskać parametry połączenia ze strony Parametry połączenia w witrynie Azure Portal.
Jak mogę zastąpić ustawienia konfiguracji opcji żądania w zestawie SDK platformy .NET dla interfejsu API dla tabeli?
Niektóre ustawienia są obsługiwane w metodzie CreateCloudTableClient i inne za pośrednictwem pliku app.config w sekcji appSettings w aplikacji klienckiej. Aby uzyskać informacje na temat ustawień konfiguracji, zobacz Możliwości usługi Azure Cosmos DB.
Czy istnieją jakieś zmiany dla klientów korzystających z istniejących zestawów SDK usługi Azure Table Storage?
Brak. Nie ma żadnych zmian dla istniejących lub nowych klientów, którzy korzystają z istniejących zestawów SDK usługi Azure Table Storage.
Jak mogę wyświetlić dane tabeli przechowywane w usłudze Azure Cosmos DB do użycia z interfejsem API dla tabel?
Aby przeglądać dane, możesz użyć witryny Azure Portal. Możesz również użyć interfejsu API dla kodu tabeli lub narzędzi wymienionych w następnej odpowiedzi.
Które narzędzia współpracują z interfejsem API dla tabeli?
Możesz użyć Eksplorator usługi Azure Storage.
Narzędzia z elastycznością podejmowania parametry połączenia w określonym wcześniej formacie mogą obsługiwać nowy interfejs API dla tabeli. Lista narzędzi tabel znajduje się na stronie Narzędzia klienckie usługi Azure Storage.
Czy współbieżność operacji jest kontrolowana?
Tak, optymistyczna współbieżność jest dostarczana za pośrednictwem mechanizmu ETag.
Czy model zapytań OData jest obsługiwany dla jednostek?
Tak, interfejs API dla tabeli obsługuje zapytania OData i zapytanie LINQ.
Czy mogę połączyć się z usługami Azure Table Storage i Azure Cosmos DB dla tabel obok siebie w tej samej aplikacji?
Tak, możesz nawiązać połączenie, tworząc dwa oddzielne wystąpienia klasy CloudTableClient, z których każdy wskazuje własny identyfikator URI za pośrednictwem parametry połączenia.
Jak mogę przeprowadzić migrację istniejącej aplikacji usługi Azure Table Storage do tej oferty?
Narzędzie AzCopy jest obsługiwane.
Jak jest rozszerzenie rozmiaru magazynu dla tej usługi, jeśli na przykład zaczynam od "n" GB danych i moje dane wzrosną do 1 TB w czasie?
Usługa Azure Cosmos DB została zaprojektowana w celu zapewnienia nieograniczonego miejsca do magazynowania przy użyciu skalowania w poziomie. Usługa może monitorować i efektywnie zwiększać magazyn.
Jak mogę monitorować interfejs API oferty tabel?
Możesz użyć interfejsu API dla okienka Metryki tabel do monitorowania żądań i użycia magazynu.
Jak mogę obliczyć wymaganą przepływność?
Możesz użyć narzędzia do szacowania pojemności, aby obliczyć tabelę TableThroughput wymaganą dla operacji. Aby uzyskać więcej informacji, zobacz Szacowanie jednostek żądań i magazynu danych. Ogólnie rzecz biorąc, możesz wyświetlić jednostkę w formacie JSON i podać liczby operacji.
Czy mogę używać interfejsu API dla zestawu TABLE SDK lokalnie z emulatorem?
Obecnie nie jest to możliwe.
Czy moja istniejąca aplikacja może współdziałać z interfejsem API dla tabeli?
Tak, ten sam interfejs API jest obsługiwany.
Czy muszę przeprowadzić migrację istniejących aplikacji usługi Azure Table Storage do zestawu SDK, jeśli nie chcę używać interfejsu API dla funkcji tabel?
Nie, możesz tworzyć i używać istniejących zasobów usługi Azure Table Storage bez żadnych przerw w działaniu. Jeśli jednak nie używasz interfejsu API dla tabeli, nie możesz skorzystać z automatycznego indeksu, opcji dodatkowej spójności ani dystrybucji globalnej.
Jak mogę dodać replikację danych w interfejsie API dla tabeli w więcej niż jednym regionie platformy Azure?
Możesz użyć globalnych ustawień replikacji portalu usługi Azure Cosmos DB, aby dodać regiony odpowiednie dla aplikacji. Aby opracować globalnie rozproszoną aplikację, należy również dodać aplikację z informacjami PreferredLocation ustawionymi na region lokalny w celu zapewnienia małego opóźnienia odczytu.
Jak mogę zmienić podstawowy region zapisu dla konta w interfejsie API dla tabeli?
Możesz użyć okienka portalu replikacji globalnej usługi Azure Cosmos DB, aby dodać region, a następnie przejść w tryb failover do wymaganego regionu. Aby uzyskać instrukcje, zobacz Tworzenie za pomocą kont usługi Azure Cosmos DB w wielu regionach.
Jak mogę skonfigurować preferowane regiony odczytu pod kątem małych opóźnień podczas dystrybucji danych?
Aby ułatwić odczytywanie z lokalizacji lokalnej, użyj klucza PreferredLocation w pliku app.config. W przypadku istniejących aplikacji interfejs API dla tabeli zgłasza błąd, jeśli parametr LocationMode został ustawiony. Usuń ten kod, ponieważ interfejs API dla tabeli pobiera te informacje z pliku app.config.
Jak należy myśleć o poziomach spójności w interfejsie API dla tabeli?
Usługa Azure Cosmos DB zapewnia uzasadnione kompromisy między spójnością, dostępnością i opóźnieniami. Usługa Azure Cosmos DB oferuje pięć poziomów spójności interfejsu API dla deweloperów tabel, dzięki czemu można wybrać odpowiedni model spójności na poziomie tabeli i wysyłać pojedyncze żądania podczas wykonywania zapytań dotyczących danych. Po nawiązaniu połączenia klient może określić poziom spójności. Poziom można zmienić za pomocą argumentu consistencyLevel elementu CreateCloudTableClient.
Interfejs API dla tabeli zapewnia odczyty o małych opóźnieniach z napisem "Odczytaj własne zapisy" ze spójnością powiązana nieaktualność jako domyślną. Aby uzyskać więcej informacji, zobacz Poziomy spójności.
Domyślnie usługa Azure Table Storage zapewnia silną spójność w obrębie regionu i spójności ostatecznej w lokalizacjach pomocniczych.
Czy usługa Azure Cosmos DB dla tabel oferuje więcej poziomów spójności niż usługa Azure Table Storage?
Tak, aby uzyskać informacje o sposobie korzystania z rozproszonego charakteru usługi Azure Cosmos DB, zobacz Poziomy spójności. Ponieważ gwarancje są zapewniane dla poziomów spójności, można ich używać z ufnością.
Jak długo trwa replikacja danych po włączeniu dystrybucji globalnej?
Usługa Azure Cosmos DB zatwierdza dane trwale w regionie lokalnym i wypycha dane do innych regionów natychmiast w milisekundach. Ta replikacja jest zależna tylko od czasu rundy (RTT) centrum danych. Aby dowiedzieć się więcej na temat możliwości globalnej dystrybucji usługi Azure Cosmos DB, zobacz Azure Cosmos DB: globalnie rozproszona usługa bazy danych na platformie Azure.
Czy można zmienić poziom spójności żądania odczytu?
Za pomocą usługi Azure Cosmos DB można ustawić poziom spójności na poziomie kontenera (w tabeli). Za pomocą zestawu .NET SDK można zmienić poziom, podając wartość dla klucza TableConsistencyLevel w pliku app.config. Możliwe wartości to: Silna, Powiązana nieaktualność, Sesja, Spójny prefiks i Ostateczna. Aby uzyskać więcej informacji, zobacz Tunable data consistency levels in Azure Cosmos DB (Dostrajania poziomów spójności danych w usłudze Azure Cosmos DB). Kluczową ideą jest to, że nie można ustawić poziomu spójności żądania na więcej niż ustawienie dla tabeli. Na przykład nie można ustawić poziomu spójności dla tabeli na poziomie Ostateczna i spójność żądań na poziomie Silne.
Jak interfejs API dla tabeli obsługuje tryb failover, jeśli region ulegnie awarii?
Interfejs API dla tabeli używa globalnie rozproszonej platformy usługi Azure Cosmos DB. Aby upewnić się, że aplikacja może tolerować przestoje centrum danych, włącz co najmniej jeden region dla konta w portalu usługi Azure Cosmos DB Tworzenie przy użyciu kont usługi Azure Cosmos DB w wielu regionach. Priorytet regionu można ustawić przy użyciu portalu Tworzenie z kontami usługi Azure Cosmos DB w wielu regionach.
Możesz dodać dowolną liczbę regionów dla konta i kontrolować, do którego można przejść w tryb failover, zapewniając priorytet trybu failover. Aby użyć bazy danych, musisz również podać aplikację. W tym przypadku klienci nie będą napotykać przestojów. Najnowszy zestaw SDK klienta platformy .NET jest automatycznie homingiem, ale inne zestawy SDK nie są. Oznacza to, że może wykryć region, który nie działa i automatycznie przechodzi w tryb failover do nowego regionu.
Czy interfejs API dla tabeli jest włączony dla kopii zapasowych?
Tak, interfejs API dla tabeli używa platformy Azure Cosmos DB do tworzenia kopii zapasowych. Kopie zapasowe są tworzone automatycznie. Aby uzyskać więcej informacji, zobacz Online backup and restore with Azure Cosmos DB (Tworzenie kopii zapasowych i przywracanie online za pomocą usługi Azure Cosmos DB).
Czy interfejs API dla tabeli domyślnie indeksuje wszystkie atrybuty jednostki?
Tak, wszystkie atrybuty jednostki są domyślnie indeksowane. Aby uzyskać więcej informacji, zobacz Azure Cosmos DB: Indexing policies (Azure Cosmos DB: zasady indeksowania).
Czy oznacza to, że nie muszę tworzyć więcej niż jednego indeksu w celu spełnienia zapytań?
Tak, usługa Azure Cosmos DB dla tabeli zapewnia automatyczne indeksowanie wszystkich atrybutów bez żadnej definicji schematu. Ta automatyzacja umożliwia deweloperom skoncentrowanie się na aplikacji, a nie na tworzeniu indeksów i zarządzaniu nimi. Aby uzyskać więcej informacji, zobacz Azure Cosmos DB: Indexing policies (Azure Cosmos DB: zasady indeksowania).
Czy mogę zmienić zasady indeksowania?
Tak, możesz zmienić zasady indeksowania, podając definicję indeksu. Należy prawidłowo kodować i unikać ustawień.
Zasady indeksowania można ustawić tylko w portalu w Eksploratorze danych, przejść do określonej tabeli, którą chcesz zmienić, a następnie przejść do zasad skalowania i indeksowania ustawień>, wprowadzić żądaną zmianę, a następnie zapisać.
Usługa Azure Cosmos DB jako platforma wydaje się mieć wiele możliwości, takich jak sortowanie, agregacje, hierarchia i inne funkcje. Czy dodasz te możliwości do interfejsu API dla tabeli?
Interfejs API dla tabeli udostępnia te same funkcje zapytań co usługa Azure Table Storage. Usługa Azure Cosmos DB obsługuje także sortowanie, agregaty, zapytania geoprzestrzenne, hierarchię i szeroki zakres funkcji wbudowanych. Aby uzyskać więcej informacji, zobacz Zapytania SQL.
Kiedy należy zmienić tabelęThroughput dla interfejsu API dla tabeli?
Jeśli ma zastosowanie jeden z następujących warunków, należy zmienić tabelę TableThroughput:
- Wykonujesz wyodrębnianie, przekształcanie i ładowanie danych (ETL) lub chcesz przekazać wiele danych w krótkim czasie.
- Potrzebujesz większej przepływności z kontenera lub zestawu kontenerów na zapleczu. Na przykład zobaczysz, że użyta przepływność jest większa niż aprowizowana przepływność, a przepływność jest ograniczana. Aby uzyskać więcej informacji, zobacz Ustawianie przepływności dla kontenerów usługi Azure Cosmos DB.
Czy mogę skalować w górę lub w dół przepływność interfejsu API dla tabeli tabel?
Tak, możesz użyć okienka skalowania portalu usługi Azure Cosmos DB, aby skalować przepływność. Aby uzyskać więcej informacji, zobacz Ustawianie przepływności.
Czy domyślny parametr TableThroughput jest ustawiony dla nowo aprowizowania tabel?
Tak, jeśli nie zastąpisz tabeli TableThroughput za pośrednictwem pliku app.config i nie używasz wstępnie utworzonego kontenera w usłudze Azure Cosmos DB, usługa tworzy tabelę z przepływnością 400.
Czy istnieje zmiana cen istniejących klientów usługi Azure Table Storage?
Brak. Nie ma żadnych zmian w cenie dla istniejących klientów usługi Azure Table Storage.
Jak jest obliczana cena interfejsu API dla tabeli?
Cena zależy od przydzielonej tabeliThroughput.
Jak mogę obsługiwać ograniczenia liczby tabel w interfejsie API dla oferty tabel?
Jeśli szybkość żądań jest większa niż pojemność aprowizowanej przepływności dla bazowego kontenera lub zestawu kontenerów, wystąpi błąd, a zestaw SDK ponawia próbę wywołania, stosując zasady ponawiania prób.
Dlaczego muszę wybrać przepływność oprócz elementów PartitionKey i RowKey, aby korzystać z interfejsu API dla oferty tabel usługi Azure Cosmos DB?
Usługa Azure Cosmos DB ustawia domyślną przepływność dla kontenera, jeśli nie podasz go w pliku app.config lub za pośrednictwem portalu.
Usługa Azure Cosmos DB zapewnia gwarancje dotyczące wydajności i opóźnień wraz z górnymi granicami operacji. Ta gwarancja jest możliwa, gdy aparat może wymusić nadzór nad operacjami dzierżawy. Ustawienie tabeliThroughput gwarantuje, że uzyskasz gwarantowaną przepływność i opóźnienie, ponieważ platforma rezerwuje tę pojemność i gwarantuje sukces operacyjny.
Korzystając ze specyfikacji przepływności, można ją elastycznie zmienić, aby korzystać z sezonowości aplikacji, spełniać potrzeby przepływności i oszczędzać koszty.
Usługa Azure Table Storage jest dla mnie niedroga, ponieważ płacię tylko za przechowywanie danych i rzadko wykonuję zapytania. Oferta usługi Azure Cosmos DB dla tabel wydaje się być obciążająca mnie, mimo że nie wykonałem jednej transakcji ani nie przechowywano niczego. Czy możesz wyjaśnić?
Usługa Azure Cosmos DB została zaprojektowana tak, aby była globalnie rozproszonym systemem opartym na umowie SLA z gwarancjami dostępności, opóźnień i przepływności. Rezerwowanie przepływności w usłudze Azure Cosmos DB jest gwarantowane, w przeciwieństwie do przepływności innych systemów. Usługa Azure Cosmos DB oferuje więcej możliwości, których zażądali klienci, takich jak indeksy pomocnicze i dystrybucja globalna.
Nigdy nie otrzymuję powiadomienia pełnego limitu przydziału (wskazującego, że partycja jest pełna) podczas pozyskiwania danych do usługi Azure Table Storage. Za pomocą interfejsu API dla tabeli otrzymuję ten komunikat. Czy ta oferta ogranicza mnie i zmusza mnie do zmiany istniejącej aplikacji?
Azure Cosmos DB to oparty na umowie SLA system, który zapewnia nieograniczoną skalę z gwarancjami opóźnienia, przepływności, dostępności i spójności. Aby zapewnić gwarantowaną wydajność w warstwie Premium, upewnij się, że rozmiar danych i indeks są możliwe do zarządzania i skalowalne. Limit 20 GB liczby jednostek lub elementów na klucz partycji jest zapewnienie doskonałej wydajności wyszukiwania i zapytań. Aby upewnić się, że aplikacja działa prawidłowo, nawet w przypadku usługi Azure Storage, zalecamy, aby nie utworzyć gorącej partycji, przechowując wszystkie informacje w jednej partycji i wykonując względem niej zapytanie.
Więc partitionKey i RowKey są nadal wymagane z interfejsem API dla tabeli?
Tak. Ponieważ obszar powierzchni interfejsu API dla tabeli jest podobny do obszaru zestawu SDK usługi Azure Table Storage, klucz partycji zapewnia wydajny sposób dystrybucji danych. Klucz wiersza jest unikatowy w ramach tej partycji. Klucz wiersza musi być obecny i nie może mieć wartości null, jak w standardowym zestawie SDK. Długość klucza wiersza wynosi 255 bajtów, a długość klucza partitionkey wynosi 1 KB.
Jakie są komunikaty o błędach dla interfejsu API dla tabeli?
Usługi Azure Table Storage i Azure Cosmos DB dla tabel używają tych samych zestawów SDK, więc większość błędów jest taka sama.
Dlaczego otrzymuję ograniczenie, gdy próbuję utworzyć wiele tabel po drugiej w interfejsie API dla tabeli?
Azure Cosmos DB to system oparty na umowie SLA, który zapewnia gwarancje opóźnienia, przepływności, dostępności i spójności. Ponieważ jest to system aprowizowany, rezerwuje zasoby w celu zagwarantowania tych wymagań. Szybka szybkość tworzenia tabel jest wykrywana i ograniczana. Zalecamy przyjrzenie się szybkości tworzenia tabel i obniżenie jej do mniej niż 5 minut. Pamiętaj, że interfejs API dla tabeli jest systemem aprowizacji. W momencie aprowizacji zaczynasz za to płacić.
Jak mogę przekazać opinię na temat zestawu SDK lub usterek?
Możesz podzielić się swoją opinią na dowolny z następujących sposobów:
- Strona pytań i pytań firmy Microsoft
- Stack Overflow. Stack Overflow jest najlepszy w przypadku pytań programistycznych. Upewnij się, że twoje pytanie dotyczy tematu i podaj jak najwięcej szczegółów, dzięki czemu pytanie jest jasne i odpowiadalne.
Zabezpieczenia
Czym jest kontrola dostępu oparta na rolach (RBAC)?
Kontrola dostępu oparta na rolach (RBAC) to metoda regulacji dostępu do komputerów lub zasobów sieciowych na podstawie ról poszczególnych użytkowników w przedsiębiorstwie. W usłudze Azure Cosmos DB kontrola dostępu oparta na rolach służy do udzielania dostępu płaszczyzny danych do użytkowników i aplikacji.
Jak mogę włączyć kontrolę dostępu opartą na rolach płaszczyzny danych dla usługi Azure Cosmos DB dla tabel?
Użyj natywnej funkcji kontroli dostępu opartej na rolach (RBAC) usługi Azure Cosmos DB, aby udzielić dostępu do płaszczyzny danych użytkownikom i aplikacjom.