Nosql автомасштабирование вычислений
Большинство проблем, связанных с автоматическим масштабированием nosql, возникают из-за того, что данные необходимо переносить во время пиковой нагрузки. Что делать, если данные хранятся в общем хранилище, таком как CLVM, с меньшими издержками (по сравнению с NFS или общей файловой системой). Теперь, если каждое ведро / осколок - это отдельный LVM, и компьютер может смонтировать один или несколько LVM в зависимости от количества осколков, за которые он отвечает. При высокой нагрузке компьютер выдаст несколько осколков (umount LVM), а при появлении нового вычислителя будут установлены осколки. Это устраняет проблемы хранения и вычислений в БД и может сделать вычисления горизонтально масштабируемыми. Я знаю, что serverfault не принимает открытые обсуждения. Предложение форума для публикации также поможет мне. Если кто-нибудь может помочь мне понять подводные камни на эту идею, также приветствуются
2 ответа
Что делать, если данные хранятся в общем хранилище, таком как CLVM, с меньшими издержками... Это устраняет проблемы с хранилищем и вычислениями в БД и может сделать вычисления горизонтально масштабируемыми.... Предложение форума для публикации также поможет мне. Если кто-нибудь может помочь мне понять подводные камни в этой идее, также приветствуются.
Если масштабируется только вычисления, то по сравнению с ним все уменьшается, за исключением задержки. Вы могли бы в конечном итоге торговать масштабированием вычислений для уменьшения дискового ввода-вывода (узкое место), но вы можете согласиться с компромиссом и можете добавить дополнительные более быстрые диски, чтобы избежать этого; дополнительное шасси обеспечивает много места.
Для получения дополнительной информации см. Веб- страницы "Веб-сайт DB-Engine ", " DataStax - репликация данных в базах данных NoSQL ", " Журнал Linux - хранилище высокой доступности с HA-LVM " и " Горизонтальное / вертикальное масштабирование / масштабирование базы данных Википедии".
Существуют такие решения, как MemCached(DB), которые проще добавить, чем переключаться с NoSQL на другое программное обеспечение, но программное обеспечение, которое обещает лучшее масштабирование, является лучшим решением.
В этом сравнении Casandra и MongoDB вердикт звучит так: "Если вам нужна масштабируемость при записи и 100% -ная доступность, Cassandra вам больше подойдет". Всегда будут некоторые компромиссы, вам нужен полный анализ затрат / выгод, который учитывает деньги и время - наихудшая ситуация - пойти в одну сторону и свернуть в тупик, вынужденный пересмотреть проблему, когда та же или другая стена ударил
Вам решать, должно ли решение, которое вы хотите, быть недорогим в краткосрочной или долгосрочной перспективе, и какой набор функций (сложность) соответствует вашим потребностям и стоит вашего времени. Первый сайт, на который ссылаются выше, позволяет сравнивать различные наборы функций и стоимость, а также предоставляет ссылки на многие сайты.
Позвольте мне предложить другой путь: распределенная общая память или рефлексивная память.
"Система распределенной памяти, часто называемая мультикомпьютером, состоит из нескольких независимых узлов обработки с локальными модулями памяти, которые связаны общей сетью взаимосвязей. Программные системы DSM могут быть реализованы в операционной системе или в виде библиотеки программирования и могут быть рассматривается как расширение базовой архитектуры виртуальной памяти. При реализации в операционной системе такие системы прозрачны для разработчика, что означает, что основная распределенная память полностью скрыта от пользователей. В отличие от программных систем DSM, реализованных в библиотеке или уровень языка не прозрачен, и разработчикам обычно приходится программировать их по-разному. Однако эти системы предлагают более переносимый подход к реализациям системы DSM. Система распределенной разделяемой памяти реализует модель разделяемой памяти в физически распределенной системе памяти ".
Наряду с программным решением для разделяемой памяти также существует аппаратное решение. Вот несколько поставщиков плат интерфейса распределенных вычислений:
Dolphin - PXH812 Host / Target Adapter - Соединяет шину PCIe одного компьютера с другим на скорости 64 Гбит / с с задержкой 138 наносекунд по меди на скорости до 5 метров (200 с оптоволокном). Это прозрачная версия (программное обеспечение не требуется, любая ОС может смешивать арки ЦП), есть также хост-адаптер PXH810 NTB (непередаваемый мост) с API SISCI (Shared-Memory Cluster Interconnect), но ОС ограничена: Windows, Linux, VxWorks или RTX. См. Их веб-страницу " Светоотражающая память PCI Express ".
Curtiss-Wright - SCRAMNet GT200 - двухпортовая память появляется на шине хоста в качестве дополнительной памяти хоста. Хост читает и записывает данные через один порт, а сеть записывает данные в память через второй порт. Данные, записанные хостом в память, автоматически передаются аппаратным обеспечением на все узлы сети.
Abaco - интерфейсная карта PCIE-5565RC - разделяет 128 или 256 МБ SDRAM в Linux, VxWorks или Windows. Доступны интерфейсные карты для PCI Express, PMC, PCI и VME.
Наряду с платой на плату вы можете добавить концентратор для большинства вышеперечисленных продуктов и добавить от нескольких до 256 узлов. Возможно, стоит подождать до следующего года и PCIe 4.0.
Например, у MongoDB есть концепция набора реплик для этой ситуации. В этом случае несколько экземпляров MongoDB обслуживают одни и те же данные. Если один не удастся, другие продолжат обслуживать данные. Общее хранилище не является необходимым или желательным для набора реплик; каждый экземпляр MongoDB хранит отдельную копию данных.
Это полностью ортогонально разделению, при котором данные распределяются между различными экземплярами MongoDB или наборами реплик.