| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.service.windowsazure.storage.table">
- <title>Zend_Service_WindowsAzure_Storage_Table</title>
- <para>
- Der Table Service bietet einen strukturierten Speicher in der Form von Tabellen.
- </para>
- <para>
- Tabellen Speicher wird von Windows Azure als REST <acronym>API</acronym> angeboten die von
- der Klasse <classname>Zend_Service_WindowsAzure_Storage_Table</classname> umhüllt ist um ein
- natives <acronym>PHP</acronym> Interface zum Speicher Konto zu bieten.
- </para>
- <para>
- Dieses Thema zeigt einige Beispiele der Verwendung der Klasse
- <classname>Zend_Service_WindowsAzure_Storage_Table</classname>. Andere Features sind im
- Download Paket enthalten sowie in den detailierten <acronym>API</acronym> Dokumentationen
- dieser Features.
- </para>
- <para>
- Es ist zu beachten das bei der Entwicklung der Tabellen Speicher (in der
- <acronym>SDK</acronym> von Windows Azure) nicht alle Features unterstützt welche von dieser
- <acronym>API</acronym> angeboten werden. Deshalb sind die Beispiele welche auf dieser Seite
- aufgeführt sind, dazu gedacht auf Windows Azure Produktions Tabellen Speichern verwendet zu
- werden.
- </para>
- <sect2 id="zend.service.windowsazure.storage.table.api">
- <title>Operationen auf Tabellen</title>
- <para>
- Dieses Thema zeigt einige Beispiele für Operationen welche auf Tabellen ausgeführt
- werden können.
- </para>
- <sect3 id="zend.service.windowsazure.storage.table.api.create">
- <title>Erstellung einer Tabelle</title>
- <para>
- Bei Verwendung des folgenden Codes, kann eine Tabelle auf dem Windows Azure
- Produktions Tabellen Speicher erstellt werden.
- </para>
- <example id="zend.service.windowsazure.storage.table.api.create.example">
- <title>Erstellen einer Tabelle</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $result = $storageClient->createTable('testtable');
- echo 'Der neue Name der Tabelle ist: ' . $result->Name;
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.service.windowsazure.storage.table.api.list">
- <title>Ausgeben aller Tabellen</title>
- <para>
- Bei Verwendung des folgendes Codes, kann eine Liste alle Tabellen im Windows Azure
- Produktions Tabellen Speicher abgefragt werden.
- </para>
- <example id="zend.service.windowsazure.storage.table.api.list.example">
- <title>Ausgeben aller Tabellen</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $result = $storageClient->listTables();
- foreach ($result as $table) {
- echo 'Der Name der Tabelle ist: ' . $table->Name . "\r\n";
- }
- ]]></programlisting>
- </example>
- </sect3>
- </sect2>
- <sect2 id="zend.service.windowsazure.storage.table.entities">
- <title>Operationen auf Entitäten</title>
- <para>
- Tabellen speichern Daten als Sammlung von Entitäten. Entitäten sind so ähnlich wie
- Zeilen. Eine Entität hat einen primären Schlüssel und ein Set von Eigenschaften. Eine
- Eigenschaft ist ein benanntes, Typ-Werte Paar, ähnlich einer Spalte.
- </para>
- <para>
- Der Tabellen Service erzwingt kein Schema für Tabellen, deshalb können zwei Entitäten in
- der selben Tabelle unterschiedliche Sets von Eigenschaften haben. Entwickler können
- auswählen das ein Schema auf Seite des Clients erzwungen wird. Eine Tabelle kann eine
- beliebige Anzahl an Entitäten enthalten.
- </para>
- <para>
- <classname>Zend_Service_WindowsAzure_Storage_Table</classname> bietet 2 Wege um mit
- Entitäten zu arbeiten:
- </para>
- <itemizedlist>
- <listitem><para>Erzwungenes Schema</para></listitem>
- <listitem><para>Nicht erzwungenes Schema</para></listitem>
- </itemizedlist>
- <para>
- Alle Beispiel verwenden die folgende erwzungene Schema Klasse.
- </para>
- <example id="zend.service.windowsazure.storage.table.entities.schema">
- <title>Erzwungenes Schema welches in Beispielen verwendet wird</title>
- <programlisting language="php"><![CDATA[
- class SampleEntity extends Zend_Service_WindowsAzure_Storage_TableEntity
- {
- /**
- * @azure Name
- */
- public $Name;
- /**
- * @azure Age Edm.Int64
- */
- public $Age;
- /**
- * @azure Visible Edm.Boolean
- */
- public $Visible = false;
- }
- ]]></programlisting>
- </example>
- <para>
- Es ist zu beachten das <classname>Zend_Service_WindowsAzure_Storage_Table</classname>,
- wenn keine Schema Klasse an die Tabellen Speicher Methoden übergeben, automatisch mit
- <classname>Zend_Service_WindowsAzure_Storage_DynamicTableEntity</classname> arbeitet.
- </para>
- <sect3 id="zend.service.windowsazure.storage.table.entities.enforced">
- <title>Erzwungene Schema Entitäten</title>
- <para>
- Um ein Schema auf der Seite des Clients bei Verwendung der Klasse
- <classname>Zend_Service_WindowsAzure_Storage_Table</classname> zu erzwingen muss
- eine Klasse erstellt werden welche sich von
- <classname>Zend_Service_WindowsAzure_Storage_TableEntity</classname> ableitet. Diese
- Klasse bietet einige grundsätzliche Funktionalitäten damit die Klasse
- <classname>Zend_Service_WindowsAzure_Storage_Table</classname> mit einem
- client-seitigen Schema arbeitet.
- </para>
- <para>
- Grundsätzliche Eigenschaften welche von
- <classname>Zend_Service_WindowsAzure_Storage_TableEntity</classname> angeboten
- werden sind:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- PartitionKey (durch <methodname>getPartitionKey()</methodname> und
- <methodname>setPartitionKey()</methodname> bekanntgemacht)
- </para>
- </listitem>
- <listitem>
- <para>
- RowKey (durch <methodname>getRowKey()</methodname> und
- <methodname>setRowKey()</methodname> bekanntgemacht)
- </para>
- </listitem>
- <listitem>
- <para>
- Timestamp (durch <methodname>getTimestamp()</methodname> und
- <methodname>setTimestamp()</methodname> bekantgemacht)
- </para>
- </listitem>
- <listitem>
- <para>
- Etag Wert (durch <methodname>getEtag()</methodname> und
- <methodname>setEtag()</methodname> bekanntgemacht)
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Hier ist eine Beispielklasse welche sich von
- <classname>Zend_Service_WindowsAzure_Storage_TableEntity</classname> ableitet:
- </para>
- <example id="zend.service.windowsazure.storage.table.entities.enforced.schema">
- <title>Beispiel einer erzwungenen Schema Klasse</title>
- <programlisting language="php"><![CDATA[
- class SampleEntity extends Zend_Service_WindowsAzure_Storage_TableEntity
- {
- /**
- * @azure Name
- */
- public $Name;
- /**
- * @azure Age Edm.Int64
- */
- public $Age;
- /**
- * @azure Visible Edm.Boolean
- */
- public $Visible = false;
- }
- ]]></programlisting>
- </example>
- <para>
- Die Klasse <classname>Zend_Service_WindowsAzure_Storage_Table</classname> mappt jede
- Klasse welche sich von
- <classname>Zend_Service_WindowsAzure_Storage_TableEntity</classname> ableitet auf
- Windows Azure Tabellen Speicher Entitäten mit dem richtigen Datentyp und dem Namen
- der Eigenschaft. Alles dort dient dem Speichern einer Eigenschaft in Windows Azure
- indem ein Docblock Kommentar zu einer öffentlichen Eigenschaft oder einem
- öffentlichen Getter oder Setter, im folgenden Format hinzugefügt wird:
- </para>
- <example id="zend.service.windowsazure.storage.table.entities.enforced.schema-property">
- <title>Erzwungene Eigenschaft</title>
- <programlisting language="php"><![CDATA[
- /**
- * @azure <Name der Eigenschaft in Windows Azure> <optionaler Typ der Eigenschaft>
- */
- public $<Name der Eigenschaft in PHP>;
- ]]></programlisting>
- </example>
- <para>
- Sehen wir uns an wie eine Eigenschaft "Ago" als Integerwert eines Windows Azure
- Tabellen Speichers definiert wird:
- </para>
- <example
- id="zend.service.windowsazure.storage.table.entities.enforced.schema-property-sample">
- <title>Beispiel einer erzwungenen Eigenschaft</title>
- <programlisting language="php"><![CDATA[
- /**
- * @azure Age Edm.Int64
- */
- public $Age;
- ]]></programlisting>
- </example>
- <para>
- Es ist zu beachten das die Eigenschaft im Windows Azure Tabellen Speicher nicht
- notwendigerweise gleich benannt werden muss. Der Name der Windows Azure Tabellen
- Speicher Eigenschaft kann genauso definiert werden wie der Typ.
- </para>
- <para>
- Die folgenden Datentypen werden unterstützt:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <constant>Edm.Binary</constant> - Ein Array von Types welche bis zu 64 KB
- Größe.
- </para>
- </listitem>
- <listitem>
- <para>
- <constant>Edm.Boolean</constant> - Ein boolscher Wert.
- </para>
- </listitem>
- <listitem>
- <para>
- <constant>Edm.DateTime</constant> - Ein 64-bit Wert welcher als koordinierte
- universelle Zeit (UTC) ausgedrückt wird. Der unterstützte DateTime Bereich
- beginnt an 1. Jänner 1601 A.D. (C.E.), koordinierter Universeller Zeit
- (UTC). Der Bereich endet am 31. Dezember 9999.
- </para>
- </listitem>
- <listitem>
- <para><constant>Edm.Double</constant> - Eine 64-bit Gleitkommazahl.</para>
- </listitem>
- <listitem>
- <para>
- <constant>Edm.Guid</constant> - Ein 128-bit großer globaler eindeutiger
- Identifikator.
- </para>
- </listitem>
- <listitem>
- <para><constant>Edm.Int32</constant> - Ein 32-bit Integerwert.</para>
- </listitem>
- <listitem>
- <para><constant>Edm.Int64</constant> - Ein 64-bit Integerwert.</para>
- </listitem>
- <listitem>
- <para>
- <constant>Edm.String</constant> - Ein UTF-16-kodierter Wert. Stringwerte
- können bis zu 64 KB groß sein.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.service.windowsazure.storage.table.entities.dynamic">
- <title>Entitäten ohne erzwungenes Schema (a.k.a. DynamicEntity)</title>
- <para>
- Um die Klasse <classname>Zend_Service_WindowsAzure_Storage_Table</classname> ohne
- Definition eines Schemas zu verwenden kann die Klasse
- <classname>Zend_Service_WindowsAzure_Storage_DynamicTableEntity</classname>
- verwendet werden. Diese Klasse erweitert
- <classname>Zend_Service_WindowsAzure_Storage_TableEntity</classname> wie es eine
- Klasse für ein erzwungenes Schema machen würde, enthält aber zusätzliche Logik um
- Sie dynamisch zu machen und nicht an ein Schema zu binden.
- </para>
- <para>
- Die grundsätzlichen Eigenschaften welche von
- <classname>Zend_Service_WindowsAzure_Storage_DynamicTableEntity</classname>
- angeboten werden sind:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- PartitionKey (durch <methodname>getPartitionKey()</methodname> und
- <methodname>setPartitionKey()</methodname> bekanntgemacht)
- </para>
- </listitem>
- <listitem>
- <para>
- RowKey (durch <methodname>getRowKey()</methodname> und
- <methodname>setRowKey()</methodname> bekanntgemacht)
- </para>
- </listitem>
- <listitem>
- <para>
- Timestamp (durch <methodname>getTimestamp()</methodname> und
- <methodname>setTimestamp()</methodname> bekanntgemacht)
- </para>
- </listitem>
- <listitem>
- <para>
- Etag Wert (durch <methodname>getEtag()</methodname> und
- <methodname>setEtag()</methodname> bekanntgemacht)
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Andere Eigenschaften können on the Fly hinzugefügt werden. Ihre Windows Azure
- Tabellen Speicher Typen werden auch on the Fly ermittelt:
- </para>
- <example id="zend.service.windowsazure.storage.table.entities.dynamic.schema">
- <title>
- Eigenschaften zu Zend_Service_WindowsAzure_Storage_DynamicTableEntity dynamisch
- hinzufügen
- </title>
- <programlisting language="php"><![CDATA[
- $target = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity(
- 'partition1', '000001'
- );
- $target->Name = 'Name'; // Fügt die Eigenschaft "Name" vom Typ "Edm.String" hinzu
- $target->Age = 25; // Fügt die Eigenschaft "Age" vom Typ "Edm.Int32" hinzu
- ]]></programlisting>
- </example>
- <para>
- Optional kann der Typ einer Eigenschaft erzwungen werden:
- </para>
- <example
- id="zend.service.windowsazure.storage.table.entities.dynamic.schema-forcedproperties">
- <title>
- Erzwingen von Eigenschaftstypen auf
- Zend_Service_WindowsAzure_Storage_DynamicTableEntity
- </title>
- <programlisting language="php"><![CDATA[
- $target = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity(
- 'partition1', '000001'
- );
- $target->Name = 'Name'; // Fügt die Eigenschaft "Name" vom Typ "Edm.String" hinzu
- $target->Age = 25; // Fügt die Eigenschaft "Age" vom Typ "Edm.Int32" hinzu
- // Ändert den Typ der Eigenschaft "Age" auf "Edm.Int32":
- $target->setAzurePropertyType('Age', 'Edm.Int64');
- ]]></programlisting>
- </example>
- <para>
- Die Klasse <classname>Zend_Service_WindowsAzure_Storage_Table</classname> arbeitet
- automatisch mit <classname>Zend_Service_WindowsAzure_Storage_TableEntity</classname>
- wenn an die Tabellen Speicher Methoden keine spezielle Klasse übergeben wurde.
- </para>
- </sect3>
- <sect3 id="zend.service.windowsazure.storage.table.entities.api">
- <title>API Beispiele für Entitäten</title>
- <sect4 id="zend.service.windowsazure.storage.table.entities.api.insert">
- <title>Eine Entität hinzufügen</title>
- <para>
- Bei Verwendung des folgenden Codes kann eine Entität in eine Tabelle hinzugefügt
- werden welche "testtable" heißt. Es ist zu beachten das die Tabelle vorher schon
- erstellt worden sein muss.
- </para>
- <example id="zend.service.windowsazure.storage.table.api.entities.insert.example">
- <title>Eine Entität einfügen</title>
- <programlisting language="php"><![CDATA[
- $entity = new SampleEntity ('partition1', 'row1');
- $entity->FullName = "Maarten";
- $entity->Age = 25;
- $entity->Visible = true;
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $result = $storageClient->insertEntity('testtable', $entity);
- // Prüfen des Zeitpunktes und von Etag der neu erstellten Entität
- echo 'Zeitpunkt: ' . $result->getTimestamp() . "\n";
- echo 'Etag: ' . $result->getEtag() . "\n";
- ]]></programlisting>
- </example>
- </sect4>
- <sect4 id="zend.service.windowsazure.storage.table.entities.api.retrieve-by-id">
- <title>Empfangen einer Entität durch Partitionsschlüssel und Zeilenschlüssel</title>
- <para>
- Durch Verwendung des folgenden Codes kann eine Entität durch seinen
- Partitions- und Zeilenschlüssel. Es ist zu beachten das die Tabelle und die
- Entität bereits vorher erstellt worden sein müssen.
- </para>
- <example
- id="zend.service.windowsazure.storage.table.entities.api.retrieve-by-id.example">
- <title>
- Empfangen einer Entität durch dessen Partitions- und Zeilenschlüssel
- </title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $entity= $storageClient->retrieveEntityById(
- 'testtable', 'partition1', 'row1', 'SampleEntity'
- );
- ]]></programlisting>
- </example>
- </sect4>
- <sect4 id="zend.service.windowsazure.storage.table.entities.api.updating">
- <title>Eine Entität aktualisieren</title>
- <para>
- Bei Verwendung des folgenden Codes kann eine Entität aktualisiert werden. Es ist
- zu beachten das die Tabelle und die Entität hierfür bereits vorher erstellt
- worden sein muss.
- </para>
- <example id="zend.service.windowsazure.storage.table.api.entities.updating.example">
- <title>Aktualisieren einer Entität</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $entity = $storageClient->retrieveEntityById(
- 'testtable', 'partition1', 'row1', 'SampleEntity'
- );
- $entity->Name = 'Neuer Name';
- $result = $storageClient->updateEntity('testtable', $entity);
- ]]></programlisting>
- </example>
- <para>
- Wenn man sicherstellen will das die Entität vorher noch nicht aktualisiert wurde
- kann man prüfen ob das <acronym>Etag</acronym> der Entität angehakt ist. Wenn
- die Entität bereits aktualisiert wurde, schlägt das Update fehl um
- sicherzustellen das neuere Daten nicht überschrieben werden.
- </para>
- <example
- id="zend.service.windowsazure.storage.table.entities.api.updating.example-etag">
- <title>Aktualisieren einer Entität (mit Etag Prüfung)</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $entity = $storageClient->retrieveEntityById(
- 'testtable', 'partition1', 'row1', 'SampleEntity'
- );
- $entity->Name = 'Neuer Name';
- // Der letzte Parameter instruiert den Etag Check:
- $result = $storageClient->updateEntity('testtable', $entity, true);
- ]]></programlisting>
- </example>
- </sect4>
- <sect4 id="zend.service.windowsazure.storage.table.entities.api.delete">
- <title>Löschen einer Entität</title>
- <para>
- Bei Verwendung des folgenden Codes kann eine Entität gelöscht werden. Es ist zu
- beachten das die Tabelle und die Entität hierfür bereits erstellt worden sein
- müssen.
- </para>
- <example id="zend.service.windowsazure.storage.table.entities.api.delete.example">
- <title>Löschen einer Entität</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $entity = $storageClient->retrieveEntityById(
- 'testtable', 'partition1', 'row1', 'SampleEntity'
- );
- $result = $storageClient->deleteEntity('testtable', $entity);
- ]]></programlisting>
- </example>
- </sect4>
- </sect3>
- <sect3 id="zend.service.windowsazure.storage.table.entities.querying">
- <title>Durchführen von Abfragen</title>
- <para>
- Abfragen im <classname>Zend_Service_WindowsAzure_Storage_Table</classname> Tabellen
- Speicher können auf zwei Wegen durchgeführt werden:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Durch manuelles Erstellen einer Filter Kondition (was das Lernen einer neuen
- Abfrage Sprache beinhaltet)
- </para>
- </listitem>
- <listitem>
- <para>
- Durch Verwendung des fluent Interfaces welches von
- <classname>Zend_Service_WindowsAzure_Storage_Table</classname> angeboten
- wird.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Bei Verwendung des folgenden Codes kann eine Tabelle abgefragt werden indem eine
- Filter Kondition verwendet wird. Es ist zu beachten das die Tabelle und die
- Entitäten hierfür vorher bereits erstellt worden sein müssen.
- </para>
- <example id="zend.service.windowsazure.storage.table.entities.querying.query-filter">
- <title>Durchführen einer Abfrage bei Verwendung einer Filter Kondition</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $entities = $storageClient->storageClient->retrieveEntities(
- 'testtable',
- 'Name eq \'Maarten\' and PartitionKey eq \'partition1\'',
- 'SampleEntity'
- );
- foreach ($entities as $entity) {
- echo 'Name: ' . $entity->Name . "\n";
- }
- ]]></programlisting>
- </example>
- <para>
- Durch Verwendung des folgenden Codes kann eine tabelle abgefragt werden indem ein
- fluid Interface verwendet wird. Es ist zu beachten das die Tabelle und die
- Entität hierfür bereits vorher erstellt worden sein müssen.
- </para>
- <example id="zend.service.windowsazure.storage.table.api.entities.query-fluent">
- <title>Durchführen einer Abfrage bei Verwendung eines Fluid Interfaces</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $entities = $storageClient->storageClient->retrieveEntities(
- 'testtable',
- $storageClient->select()
- ->from($tableName)
- ->where('Name eq ?', 'Maarten')
- ->andWhere('PartitionKey eq ?', 'partition1'),
- 'SampleEntity'
- );
- foreach ($entities as $entity) {
- echo 'Name: ' . $entity->Name . "\n";
- }
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.service.windowsazure.storage.table.entities.batch">
- <title>Batch Operationen</title>
- <para>
- Dieser Abschnitt demonstriert wie die Tabellen Entitäts Gruppen Transaktions
- Features verwendet werden können welche vom Windows Azure Tabellen Speicher
- angeboten werden. Der Windows Azure Tabellen Speicher unterstützt Batch
- Transaktionen auf Entitäten welche in der gleichen Tabelle sind und der gleichen
- Partitionsgruppe angehören. Eine Transaktion kann bis zu 100 Entitäten enthalten.
- </para>
- <para>
- Das folgende Beispiel verwendet eine Batch Operation (Transaktion) um ein Set von
- Entitäten in die Tabelle "testtable" einzufügen. Es ist zu beachten das die Tabelle
- hierfür bereits vorher erstellt worden sein muss.
- </para>
- <example id="zend.service.windowsazure.storage.table.api.batch">
- <title>Ausführen einer Batch Operation</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- // Batch starten
- $batch = $storageClient->startBatch();
- // Entitäten mit Batch einfügen
- $entities = generateEntities();
- foreach ($entities as $entity) {
- $storageClient->insertEntity($tableName, $entity);
- }
- // Übermitteln
- $batch->commit();
- ]]></programlisting>
- </example>
- </sect3>
- </sect2>
- <sect2 id="zend.service.windowsazure.storage.table.sessionhandler">
- <title>Session Handler für Tabellen Speicher</title>
- <para>
- Wenn eine <acronym>PHP</acronym> Anwendung auf der Windows Azure Plattform in einem
- Load-Balanced Modus läuft (wenn 2 oder mehr Web Rollen Instanzen laufen), ist es
- wichtig dass <acronym>PHP</acronym> Session Daten zwischen mehreren Web Rollen Instanzen
- verwendet werden können. Die Windows Azure <acronym>SDK</acronym> von
- <acronym>PHP</acronym> bietet die Klasse
- <classname>Zend_Service_WindowsAzure_SessionHandler</classname> an welche den Windows
- Azure Tabellen Speicher als Session Handler für <acronym>PHP</acronym> Anwendungen
- verwendet.
- </para>
- <para>
- Um den <classname>Zend_Service_WindowsAzure_SessionHandler</classname> Session Handler
- zu verwenden sollte er als Default Session Handler für die <acronym>PHP</acronym>
- Anwendung registriert sein:
- </para>
- <example id="zend.service.windowsazure.storage.table.api.sessionhandler-register">
- <title>Registrierung des Tabellen Speicher Session Handlers</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $sessionHandler = new Zend_Service_WindowsAzure_SessionHandler(
- $storageClient , 'sessionstable'
- );
- $sessionHandler->register();
- ]]></programlisting>
- </example>
- <para>
- Der obenstehende Klassenname registriert den
- <classname>Zend_Service_WindowsAzure_SessionHandler</classname> Session Handler und
- speichert Sessions in einer Tabelle die "sessionstable" genannt wird.
- </para>
- <para>
- Nach der Registrierung des
- <classname>Zend_Service_WindowsAzure_SessionHandler</classname> Session Handlers
- können Session gestartet und auf dem gleichen Weg wie normale <acronym>PHP</acronym>
- Sessions verwendet werden:
- </para>
- <example id="zend.service.windowsazure.storage.table.api.sessionhandler-usage">
- <title>Verwendung des Tabellen Speicher Session Handlers</title>
- <programlisting language="php"><![CDATA[
- $storageClient = new Zend_Service_WindowsAzure_Storage_Table(
- 'table.core.windows.net', 'myaccount', 'myauthkey'
- );
- $sessionHandler = new Zend_Service_WindowsAzure_SessionHandler(
- $storageClient , 'sessionstable'
- );
- $sessionHandler->register();
- session_start();
- if (!isset($_SESSION['firstVisit'])) {
- $_SESSION['firstVisit'] = time();
- }
- // ...
- ]]></programlisting>
- </example>
- <warning>
- <para>
- Der <classname>Zend_Service_WindowsAzure_SessionHandler</classname> Session Handler
- sollte registriert werden bevor ein Aufruf zu
- <methodname>session_start()</methodname> durchgeführt wird!
- </para>
- </warning>
- </sect2>
- </sect1>
|