Ресурсы для базы данных Sharding и разделение

Мы можем использовать lag и fill из tidyverse

library(tidyverse)

df %>%
 mutate(b1 = replace(a, a < lag(a), NA)) %>%
 fill(b1)


#      a     b    b1
#  <dbl> <dbl> <dbl>
#1     1     1     1
#2     2     2     2
#3     3     3     3
#4     4     4     4
#5     3     4     4
#6     2     4     4
#7     5     5     5
#8     6     6     6
#9     9     9     9

. Логика заключается в том, что мы заменяем значения в a на NA, где предыдущее значение больше следующего а затем используйте fill для замены этих NA на последнее значение, отличное от NA.

8
задан Anony-Mousse 22 June 2012 в 12:31
поделиться

4 ответа

Я соглашаюсь с другими ответами, что необходимо посмотреть схему и индексы прежде, чем обратиться к sharding. 10 миллионов строк хорошо в возможностях любого из главных механизмов базы данных.

Однако, если Вы хотите некоторые ресурсы для приобретения знаний о предмете sharding, затем пробуют их:

10
ответ дан 5 December 2019 в 12:14
поделиться

10 миллионов строк являются действительно не большими в терминах DBMS, и я сначала посмотрел бы на свою индексацию и планы запросов прежде, чем начать планировать физическое распределение данных с черепками или разделами, которые не должны действительно быть необходимыми, пока Ваша таблица не выросла на несколько порядков величины.

Все, по моему скромному мнению, конечно.

1
ответ дан 5 December 2019 в 12:14
поделиться

Я соглашаюсь с наблюдением Mike Woodhouse, что текущий размер не должен быть проблемой - и корреспондент соглашается.

Большая часть коммерческого DBMS оказывает поддержку для фрагментированных таблиц в некоторых для или другом под одним именем или несколькими другими. Один из ключевых вопросов - существует ли разумный способ разделить данные на фрагменты. Один распространенный способ состоит в том, чтобы сделать так на основе даты, таким образом, все значения на, скажем, ноябрь 2008 входят в один фрагмент, значения на октябрь 2008 в другого и так далее. Это имеет преимущества, когда это прибывает время для удаления старых данных. Можно, вероятно, отбросить фрагмент, содержащий данные с октября 2001 (хранение данных семи лет), не влияя на другие фрагменты. Этот вид фрагментации может также помочь с 'устранением фрагмента'; если запрос ясно не может должен быть считывать данные с данного фрагмента, то это оставят непрочитанным, который может дать Вам великолепный выигрыш в производительности. (Например, если оптимизатор будет знать, что запрос для даты в октябре 2008, то это проигнорирует все фрагменты кроме того, который содержит данные с октября 2008.)

Существуют другие методы фрагментации - циклический алгоритм распределяет загрузку через несколько дисков, но означает, что Вы не можете извлечь выгоду из устранения фрагмента.

2
ответ дан 5 December 2019 в 12:14
поделиться

По моему опыту, большие таблицы всегда поражают Вас в сторону ввода-вывода. Самое дешевое решение состоит в том, чтобы добавить достаточно многостолбцовых индексов так, чтобы все Ваши запросы могли получить данные непосредственно из индекса, не имея необходимость загружать основные страницы данных. Это делает Ваши вставки и обновляет более интенсивно использующий средства ввода-вывода, но это может быть в порядке. Следующая легкая опция это истратило RAM в Вашем сервере. Никакая причина иметь меньше чем 32 ГБ, если Ваша база данных является большой. Но в конце Вы все еще найдете себя вводом-выводом связанный, и Вы будете смотреть на покупку большого количества жестких дисков и поддержания сложной схемы выделения разделов, которая стоит состояния между аппаратными средствами и работой. Я надеюсь, что существует лучшая альтернатива в эти дни - перемещают базу данных от вращения жестких дисков к твердотельным накопителям SLC - это должно сделать Ваши случайные чтения и пишет в сто раз быстрее, чем вершина строки диски SAS, и удалите узкое место ввода-вывода. SSD запускаются на уровне 10$ за гигабайт, таким образом, Вы собираетесь потратить некоторых главных, но это еще намного более дешево, чем SAN и т.д.

1
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: