2016-08-21 8 views
0

Мне было интересно, можно ли сохранить имя таблицы, которую я импортирую в хранилище таблиц Azure? Можно ли импортировать несколько баз данных той же структуры столбцов в хранилище таблиц Azure?Azure Table Storage MySQL Импортированное имя таблицы в столбце

Я прошу об этом, прежде чем я куплю хранилище для хранения Azure. Я просто хочу убедиться, что он работает на все, что мне нужно.

Обновление: Итак, у меня есть база данных с около 500 таблицами, и все они имеют одинаковые столбцы Имя пользователя, адрес электронной почты, хеш, соль, имя, IP и т. Д. ... некоторые таблицы имеют только имя пользователя и адрес электронной почты, а другие более или менее. Однако в конце все таблицы имеют одинаковое правописание для столбцов. Я хочу создать хранилище таблиц Azure со всеми столбцами. Затем импортируйте все таблицы. Таблицы SO, в которых отсутствуют столбцы, будут иметь нуль в столбцах, которые у них отсутствуют. Но я хочу импортировать имя таблицы в столбец. Поэтому, если таблица1 импортирована, один столбец будет иметь имя «Имя базы данных», а имя таблицы будет в нем и так далее.

Обновление 2: Так можно сделать что-то подобное. Как видно here в

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

Я хотел бы иметь

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

Я думаю, что я хочу сказать, можно ли поставить имя таблицы, я импортировать в WebsiteEntity показанный выше? И чем автоматически создать его как .username и .email, если он находится в таблице SQL, импортируемой? Как колонка. Итак, в таблице 1 есть имя пользователя и адрес электронной почты, и он называется Google, поэтому при импорте веб-сайтов будут созданы Google и имя сайта1.info и website1.email будет автоматически создано.

Благодарим вас за продвинутый вопрос. Я очень новичок в этом.

Обновление 3: После дальнейших исследований, мой вопрос: могу ли я импортировать каждую таблицу из базы данных MySQL в свой собственный раздел?

+0

Опишите ситуацию ниже. Просьба обновить свой вопрос и предоставить как можно больше информации о том, что вы пытаетесь сделать. Как сейчас, то, о чем вы просите, неясно. –

+0

В хранилище таблиц нет понятия * columns * - только свойства для каждого объекта (и никаких правил принудительного исполнения для обеспечения того, чтобы каждый объект имел те же свойства, кроме правил на стороне приложения). Примечание. Табличные таблицы хранения не такие, как, скажем, таблицы SQL Server. –

+0

Непонятно, что вы хотите. В хранилище таблиц нет такой схемы, как таблицы SQL, вы можете добавлять объекты с разными свойствами в одну и ту же таблицу. – gbellmann

ответ

0

Каждый объект azure table имеет ключ раздела и ключ строки, раздел сущности и ключ строки однозначно идентифицируют сущность в таблице. Мы можем использовать имя таблицы 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. Обратитесь к this article, чтобы узнать, как начать работу с таблицы Azure.

Это результат использования Azure Storage Explorer. Мы можем узнать первый объект из таблицы «Person» MySQL и второй объект из таблицы «User» MySQL. Это простое достижение. Если у вас есть особые требования, создайте новую структуру таблицы Azure.

enter image description here

0

Если вы хотите вставить каждый из исходных таблиц в их собственный раздел в памяти таблицы, единственный способ сделать это, чтобы убедиться, что все объекты из исходной таблицы записывается с тем же ключом раздела , Вы также упоминали, что у вас есть требование выяснить, какой объект принадлежит исходной таблице изначально, поэтому у вас на самом деле нет большого варианта, но используйте имя исходной таблицы в качестве ключа раздела при записи объектов из этой таблицы в хранилище таблицы azure и построение ключ строки, который позволит вам однозначно идентифицировать этот объект в этом разделе.

Если ваши исходные таблицы имеют много сущностей или вы ожидаете, что они будут расти в будущем, это не рекомендуется масштабируемый дизайн. Вы могли бы сохранить ключи разделов уникальными и добавить или добавить имя исходной таблицы в ключ строки с разделителем, например, в качестве альтернативы.

Также можно упомянуть не пытаться добавить имя исходной таблицы в качестве свойства и фильтр для нее позже, это худший из худших проектов :) Это вызовет сканирование таблицы во всей вашей большой таблице лазур.

Следующий вопрос о недостающих свойствах для некоторых объектов, хранилище таблиц Azure - это NoSql db, поэтому, если вы вставляете объект с отсутствующими свойствами или свойствами, но они имеют нулевое значение (то есть пустую строку), этот объект будет записан в хранилище таблиц без этого свойства. С точки зрения обслуживания azure table вы просите написать словарь с парами ключевых значений, и все это, служба не заботится и не знает, какие ограничения или схемы у вас есть на вашей стороне приложения/клиента.

Когда вы читаете образы сущностей, вы можете прочитать их как DynamicTableEntities или с конкретным типом, используя SDK Storage.

+0

Привет, спасибо за ваш ответ. Я собирался сделать это, чтобы установить ключ раздела в качестве имени исходной таблицы. Однако при импорте есть опция, чтобы установить это? Итак, все разделы разделяются при импорте исходной таблицы? Также исходная таблица не будет расти, поэтому не нужно беспокоиться об этом. Подумав об этом, я просто собирал каждую исходную таблицу в своем собственном разделе. Это плохая идея или я должен просто поместить все в одну таблицу разделов и иметь ключ раздела в качестве имени исходной таблицы? Большое вам спасибо –

+0

[Ссылка из MDSN] (https://azure.microsoft.com/en-us/documentation/articles/data-factory-onprem-mysql-connector/) Мне сказали использовать это, как бы я достичь того, чего я хочу с этим. Я не совсем понимаю это. –