Я работаю с таблицей Azure (хранилище), чтобы хранить информацию о веб-сайтах, с которыми я работаю. Итак, я планировал эту структуру:Azure table delete pattern - удалить старые предметы
- раздела Key - имя домена
- Row ключ - Веб-страница адрес
- Действителен до (дата время) - после этой даты, запись будет удалена.
- Другие важные данные здесь ...
тех столбцов будут сохранены в таблице называется как адрес веб-сайта (например, «cnn.com»).
У меня есть два основных варианта использования (от низкого до низкого): 1. Проверьте, действительно ли URL «x» находится в таблице - найти по сочетанию ключа раздела и ключа строки - очень эффективно. 2. Удалить старые данные - удалить все истекшие данные (в соответствии с столбцом «Действителен до»). Эта операция происходит каждую ночь и, возможно, удаляет миллионы строк - очень тяжелая.
Итак, наша первая задача (проверьте, существует ли URL-адрес) эффективна с этой моделью данных. Вторая задача - нет. Я хочу избежать пакетного удаления.
Я также беспокоюсь о создании «горячих точек», что сделает меня низкой производительностью. Это потому, что ключ раздела. Я ожидаю, что через несколько часов я запрошу больше вопросов для конкретного домена. Это сделает эту точку доступа раздела и ударит мою производительность. Чтобы этого избежать, я решил использовать хеш-функцию (по URL-адресу), и результатом будет «ключ раздела». Это хорошая идея?
Я также думал о другом пути реализации, и это выглядит, как у них есть некоторые проблемы:
- Сохранение строк в таблице, названые с датой удаления (например, «cnn.com-1-1-2016»). Это дает нам отличную производительность. Но плохой опыт поиска (строка может существовать более чем в одной таблице, например «cnn.com-1-1-2016» или «cnn.com-2-1-2016» ...).
Какое правильное решение для моей проблемы?
Нет ответа «правильный» - это широкая тема с множеством возможных решений (добавление дополнительных таблиц для ссылок на удаление, использование альтернативной базы данных для данных для поиска для удаления и т. Д.). Что касается «горячих точек», то это зависит от вас от теста (поскольку каждый раздел обеспечивает до 2000 транзакций/сек). –