2016-08-21 20 views
0

Azureテーブルストレージにインポートするテーブルの名前を保持できるかどうか疑問に思っていましたか? Azure Table Storageに同じ列構造の複数のデータベースをインポートすることは可能ですか?Azureテーブルストレージ列のMySQLインポートテーブル名

私はAzure Table Storageを購入する前にこれを尋ねています。私がしなければならないことは何でもできることを確かめたいだけです。

アップデート: 私は約500のテーブルを持つデータベースを持っています。それらはすべて、比較的同じ列のユーザー名、電子メール、ハッシュ、ソルト、名前、IPなどを持ちます。多かれ少なかれ。しかし、結局、すべてのテーブルの列のスペルは全く同じです。すべての列を持つAzureテーブルストレージを作成したいと思います。次に、すべてのテーブルをインポートします。列がないSO表には、それらの列にないNULLが含まれます。しかし、テーブル名を列にインポートしたい。したがって、table1をインポートすると、1つの列には「データベース名」という名前が付けられ、table1の名前はそのデータベースに格納されます。

更新2: このようなことが可能です。

CustomerEntity customer1 = new CustomerEntity("Harp", "Walter"); 
customer1.Email = "[email protected]"; 
customer1.PhoneNumber = "425-555-0101"; 

hereを見られるように、私は持っていたいです

WebsiteEntity website1 = new WebsiteEntity("Google"); 
website1.Username = "username1" 
website1.email = "[email protected]" 

私はそれは私が上に示したWebsiteEntityにインポートするテーブル名を入れることが可能である言っている何を思いますか?そして、それがインポートされているSQLテーブルにある場合は、自動的に.usernameと.emailのように作成されます。列のように。テーブル1にはカラムのユーザ名とメールアドレスがあり、Googleという名前になっています。ウェブサイトのインポートはGoogleになり、website1.usernameとwebsite1.emailが自動的に作成されます。

先進的でありがとう、私はこれに非常に新しいです。

更新3: さらに調査したところ、私の質問はMySQLデータベースから各パーティションを独自のパーティションにインポートできますか?

+0

あなたのシナリオをより詳しく説明できますか?質問をしっかりと更新し、できるだけ多くの情報を提供しようとしています。今のところ、あなたが求めていることははっきりしていません。 –

+0

テーブルストレージには、各エンティティのプロパティだけが*カラム*という概念はありません(アプリケーションエンティティルール以外の各エンティティが同じプロパティを持つようにするための強制ルールはありません)。注:テーブルストレージテーブルは、SQL Serverテーブルと同じではありません。 –

+0

あなたが望むものは明確ではありません。テーブルの記憶域にはSQLテーブルのようなスキーマはありません。異なるプロパティを持つエンティティを同じテーブルに追加できます。 – gbellmann

答えて

0

各Azureテーブルエンティティはパーティションキーと行キーを持ち、エンティティのパーティションと行キーはテーブル内のエンティティを一意に識別します。 MySQLのテーブル名をパーティションキーとして使用し、MySQLの主キーを行キーとして使用できます。パーティションキーを使用して、私たちのエンティティがどこにあるかを知ることができます。 MySQLでのユーザと呼ばれるテーブルを持っている場合は、エンティティ

public class UserEntity : TableEntity 
{ 
    public UserEntity(string tablename, string primarykey) 
    { 
     this.PartitionKey = "User"; 
     this.RowKey = primarykey; 
    } 

    public UserEntity() { } 

    public string UserName { get; set; } 

    public string Email { get; set; } 
} 
を作成し、MySQLの人のテーブルのために人を作成するなどの

public class PersonEntity : TableEntity 
{ 
    public UserEntity(string tablename, string primarykey) 
    { 
     this.PartitionKey = "Person"; 
     this.RowKey = primarykey; 
    } 

    public PersonEntity() { } 

    public string UserName { get; set; } 

    public string Email { get; set; } 

    public string Password { get; set; } 

} 

その後、我々は、MySQLからデータを読み取ります。 MySQLの値を持つエンティティを作成し、Azureテーブルに挿入します。 Azureテーブルの使い方については、this articleを参照してください。

Azure Storage Explorerの結果です。 "Person" MySQLテーブルの最初のエンティティと "User" MySQLテーブルの2番目のエンティティを知ることができます。これは簡単な成果です。特別な要件がある場合は、新しいAzureテーブル構造を作成してください。

enter image description here

0

あなたがテーブルのストレージに、独自のパーティションにソース表のそれぞれを挿入したい場合は、それを行うための唯一の方法は、ソーステーブルからすべてのエンティティが同じパーティションキーと書かれていることを確認することです。元々どのソーステーブルに属しているのかを知る必要があることも述べています。そのため、実際にはあまり選択肢がありませんが、ソーステーブル名をパーティションキーとして使用して、そのパーティション内のそのエンティティを一意に識別できるようにする行キーです。

ソーステーブルに多数のエンティティがある場合や将来的にエンティティの数が増えることが予想される場合、これは推奨されるスケーラブルデザインではありません。パーティション・キーを一意に保ち、ソース・テーブル名を行キーに追加するか、たとえば、区切り文字を使用して行キーの前に追加することができます。

また、ソーステーブル名をプロパティとして追加して後でフィルタリングしないでください。これは最悪のデザインで最悪です:)大規模な紺碧のテーブル全体でテーブルスキャンが発生します。

AzureテーブルストレージはNoSqlデータベースなので、不足しているプロパティやプロパティを持つエンティティを挿入してもnull値(つまりヌル文字列)があると、そのエンティティが書き込まれますその特性を持たない灰色のテーブルストレージへ。 Azureテーブルのサービスの観点からは、キーバリューペアの辞書を書くことを要求しています。そのサービスは、アプリケーション/クライアント側にどのような制約やスキーマがあるか気にしません。

エンティティを読み戻すときは、DynamicTableEntitiesとして読み取るか、Storage SDKを使用して具体的なタイプで読み取ることができます。

+0

こんにちは、ありがとうございました。私はソーステーブル名として私のパーティションキーをセットするつもりでした。しかし、インポートするときにこれを設定するオプションがありますか?だから、ソーステーブルをインポートするとき、すべてのパーティションキーが同じですか?また、ソーステーブルが成長しないので、それを心配する必要はありません。それについて考えた後、私は自分のパーティションに各ソーステーブルを置くつもりでした。これは悪い考えですか?あるいは、すべてを1つのパーティションテーブルに入れ、ソーステーブル名としてパーティションキーを持っているだけですか?ありがとうございました –

+0

[Link from MDSN](https://azure.microsoft.com/en-us/documentation/articles/data-factory-onprem-mysql-connector/)私はこれを使用するように言われました。私がこれで欲しいものを達成してください。私はこれをあまり理解していません。 –

関連する問題