URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 108854
[ Назад ]

Исходное сообщение
"Для MongoDB представлено хранилище в оперативной памяти Perc..."

Отправлено opennews , 17-Авг-16 08:56 
Компания «Перкона» (Percona) объявила (https://www.percona.com/about-percona/newsroom/press-release...) о выпуске Percona Memory Engine (https://www.percona.com/software/mongo-database/percona-memo...) для MongoDB, открытого in-memory хранилища для Percona Server для MongoDB. Хранилище в оперативной памяти на базе движка хранения WiredTiger (http://www.wiredtiger.com/) предусмотрено в MongoDB 3.2 Enterprise Edition, но отсутствует в MongoDB Community Edition. Percona Memory Engine для MongoDB предоставляет возможность без дополнительных затрат использовать аналогичное хранилище в Percona Server для MongoDB, бесплатной открытой альтернативе MongoDB Community Edition с расширенными возможностями. Исходные тексты продукта опубликованы (https://github.com/percona/percona-server-mongodb) на GitHub под лицензией AGPL.


Percona Memory Engine для MongoDB обеспечивает высокую производительность при операциях чтения с предсказуемыми задержками, а также высокую производительность при операциях записи без сохранения данных на диске. Новое решение помогает сократить расходы на инфраструктуру, так как позволяет сэкономить на построении высокопроизводительного хранилища. Параметры командной строки и конфигурации Percona Memory Engine для MongoDB идентичны тем, которые используются в MongoDB 3.2 Enterprise Edition, что обеспечивает простоту перехода на Percona Server для MongoDB.


Основные примеры использования Percona Memory Engine для MongoDB:


-    Кэш приложения (Application Cache) заменяет такие сервисы, как memcached и самописные структуры данных уровня приложения. Кэш-память приложения может использовать все возможности MongoDB.
-         Аналитика в реальном времени (Real-time Analytics) использует вычисления в памяти для тех случаев, когда время отклика важнее, чем сохранение данных.
-         Сложные операции с данными (Sophisticated Data Manipulation) – решение обеспечивает более высокую производительность при сложных операциях c данными – таких, как агрегирование и MapReduce.
-         Управление сессиями (Session Management) – активные сессии пользователей хранятся в памяти для уменьшения времени отклика приложения.
-         Кратковременное состояние среды выполнения (Transient Runtime State) – хранение динамического состояния приложения.
-         Многоуровневый общий доступ к объектам (Multi-tier object sharing) упрощает общий доступ к данным в многоуровневых приложениях и приложениях, написанных на нескольких языках программирования.
-          Тестирование приложения (Application Testing) сокращает время выполнения автоматизированных тестов.

URL: https://www.percona.com/about-percona/newsroom/press-release...
Новость: https://www.opennet.ru/opennews/art.shtml?num=44978


Содержание

Сообщения в этом обсуждении
"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 08:56 
Осталось добавить сервер приложений на lua и будет похоже на Tarantool.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 09:15 
https://softinstigate.atlassian.net/wiki/display/RH/Home

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 09:19 
Осталось отказаться от сохранения JSON-структуры при хранении и реализовать SQL вместо кривого собственного языка запросов. А еще неплохо бы обеспечить хоть какую-нибудь транзакционность. И можно будет пользоваться....

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено rob pike , 17-Авг-16 10:13 
> ToroDB - Open source NoSQL database that runs on top of a RDBMS. Compatible with MongoDB protocol and APIs, but with support for native SQL, atomic operations and reliable and durable backends like PostgreSQL

https://github.com/torodb/torodb


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Вадик , 17-Авг-16 11:22 
Как бы надо уметь разделять инструменты. Мы в монге храним данные о клиентах и в целом атомарности на уровне документа достаточно для 99% задач. Для денег юзаем postgresql.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Forth , 17-Авг-16 13:47 
Есть смысл в таком разделении? Ведь PG весьма быстр, на кой нужна mongo?

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 14:44 
Для автоматического масштабирования, очевидно же.

В рамках одного сервера монга нафиг не нужна.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Forth , 17-Авг-16 14:47 
> Для автоматического масштабирования, очевидно же.
> В рамках одного сервера монга нафиг не нужна.

Это сколько должно быть серверов, чтобы это было нужно? 100? 1000?


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено путукфд , 17-Авг-16 16:11 
>> Для автоматического масштабирования, очевидно же.
>> В рамках одного сервера монга нафиг не нужна.
> Это сколько должно быть серверов, чтобы это было нужно? 100? 1000?

from 3.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено rob pike , 17-Авг-16 18:39 
Горизонтальное масштабирование для СУБД это по большей части уже пережитки прошлого.
Множество ядер, NVMe и NVDIMM storage, несколько терабайт RAM по вполне некосмическим ценам во вполне стандартном сервере - это уже настоящее (про ближайшее будущее можно посмотреть, например, http://www.snia.org/nvmsummit2016).
Миллион TPS это уже обыденное явление - http://www.slideshare.net/ssuser50a356/postgresql-on-sasssdn...

Так что MongoDB с "криво, косо, ненадежно, НО WEBSCALE!!!11" с технической точки зрения перспективы имеет не лучшие.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Forth , 17-Авг-16 19:32 
> Горизонтальное масштабирование для СУБД это по большей части уже пережитки прошлого.
> Множество ядер, NVMe и NVDIMM storage, несколько терабайт RAM по вполне некосмическим
> ценам во вполне стандартном сервере - это уже настоящее (про ближайшее
> будущее можно посмотреть, например, http://www.snia.org/nvmsummit2016).
> Миллион TPS это уже обыденное явление - http://www.slideshare.net/ssuser50a356/postgresql-on-sasssdn...

Вот-вот. Кластер постгресов в кучей синхронных слейвов только на чтение, и жирным мастером с NVMe: миллион tps (с ACID) и хорошая масштабируемость на чтение. Зачем этот цирк с NoSQL?

> Так что MongoDB с "криво, косо, ненадежно, НО WEBSCALE!!!11" с технической точки
> зрения перспективы имеет не лучшие.

+1


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено rob pike , 17-Авг-16 19:41 
Да и куда тот кластер? На чтение в RAM влезут все 99% горячих данных, на том же сервере. Память нынче дешева.
Жирность мастера с NVMe тоже преувеличена, на Хетцнерах их уже по сотке евро торгуют, с Xeon и 64GB RAM - и задачу которой на запись этого с нормально настроенным PostgreSQL этого не хватит, искать надо днем с огнем.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Forth , 17-Авг-16 19:56 
> Да и куда тот кластер? На чтение в RAM влезут все 99%
> горячих данных, на том же сервере. Память нынче дешева.

Памяти много, а процессоров может не хватить для обработки запросов, машину с 256GB памяти и двумя 6-ядерными Xeon дешевле купить намного, чем с 4-мя 10-ти ядерными :)
Очень много конкурирующих за ядра процессов  - большая сатурация кэша.
> Жирность мастера с NVMe тоже преувеличена, на Хетцнерах их уже по сотке
> евро торгуют, с Xeon и 64GB RAM - и задачу которой
> на запись этого с нормально настроенным PostgreSQL этого не хватит, искать
> надо днем с огнем.

Дык для той самой масштабируемости, про которую все говорят, но которую мало кто трогал вживую :)


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено rob pike , 17-Авг-16 20:30 
Если для обработки OLTP-запросов не хватает именно процессоров, то это очень странный OLTP. Не хватает их на OLAP и ETL, которые масштабируются без каких-либо проблем любым желаемым образом.

Процессов - по числу ядер, какой смысл больше? Для мультиплексирования перед постгресом есть pg_bouncer.

> для той самой масштабируемости, про которую все говорят, но которую мало кто трогал вживую

Это обычное явление. Avito справляется, но для типичного Анонима это несерьезно, нужен webscale.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Forth , 17-Авг-16 21:25 
> Если для обработки OLTP-запросов не хватает именно процессоров, то это очень странный
> OLTP. Не хватает их на OLAP и ETL, которые масштабируются без
> каких-либо проблем любым желаемым образом.
> Процессов - по числу ядер, какой смысл больше? Для мультиплексирования перед постгресом
> есть pg_bouncer.

Бывает жирное OLTP, с вдумчивой возней, вплоть до "если a!=b попрошу a по FDW оттудова, потом продолжу" :)
Но вообще согласен конечно, достаточно хорошей машины и второй в резерве для отказоустойчивости.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено rob pike , 17-Авг-16 23:13 
Если с FDW, да еще и адаптер на Multicorn за полчаса сделан - можно и не в то упереться, конечно.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено путукфд , 17-Авг-16 16:11 
>Есть смысл в таком разделении? Ведь PG весьма быстр, на кой нужна mongo?

Schemaless. REST from scratch. Horizontal scaling.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 17:45 
https://www.youtube.com/watch?v=b2F-DItXtZs

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Лютый жабист_ , 22-Авг-16 05:26 
> Есть смысл в таком разделении? Ведь PG весьма быстр, на кой нужна
> mongo?

PG быстрее Oracle и Mysql на десятки процентов в моих workload-ах. Монга быстрее по некоторым операциям в десяток раз ;)

p.s. сколько времени занимает добавить 5 новых столбцов в PG на табличке из 1млрд записей?
Как при этом проседает скорость select/update/insert?
Вспоминается анекдот "папа, покажи многозадачность", "щас, дискетку доформатирую!".


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Лютый жабист_ , 22-Авг-16 11:19 
"Есть смысл в таком разделении? Ведь PG весьма быстр, на кой нужна mongo?"

на таблице с несчастными 100млн записей
select count(*) from data;
быстрый ПГ впал в кому на 15 минут, при этом заметно просадив скорость выборок.

В монге любой размер таблицы и ответ за пару сек.

Бэкап монга делает в десятки раз быстрее, чем ПГ и Оракле. При этом совершенно незаметно на скорости отдачи инфы.

Про alter table с 100-1000 млн записей у ПГ и Оракле я промолчу.

При этом задач где монго в разы медленнее ещё не встечал. На несколько десятков процентов - да.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Лютый жабист_ , 22-Авг-16 05:22 
Профдеформация?! После 15 лет с SQL, считаю
db.persons.find().limit(1).sort({$natural:-1})
просто сказкой. Не буду напоминать, что у всех РДБМСов даже банальный .limit() делается у каждого по своему. У Оракле ещё и с приседаниями, т.к. rownum отсекает до сортировки. В сад такие "стандарты"!

С точки зрение прогера - JDBC многословен просто до одурения, то что в монге делается 5 словами, в JDBC полстраницы кода. Про гребублю с preparedStatements + select молчу, когда надо искать с переменным количеством критериев ты вынужден делать отдельные ps.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 14:26 
Вот бы еще разработчики PostgrerSQL последовали данному примеру, ломаются уже который год со всякими бестолковыми отговорками

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 14:41 
Отговорки у них толковые, там архитектурно сейчас некуда пришить storage engines.

Но можно использовать FDW. Я так в redis из постгреса хожу. Извращение, но работает!


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено anonimnous , 17-Авг-16 17:52 
Причём здесь механизм движков? Можно в рамках текущего движка реализовать возможность выбора устройства хранения данных

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 17-Авг-16 23:44 
полноценный ACID версионник в памяти нафиг не нужен, а не полноценный - это уже не в рамках

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 19-Авг-16 18:20 
ACID в inmemory вообще не нужен, в чем проблема?

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 20-Авг-16 10:43 
Это всё ограниченность мышления, такие вещи решать только конечному пользователю, нужен ACID или нет. База в первую очередь должна предоставить возможность выбора устройства хранения данных. А с новыми ssd, которые работают через интерфейс оперативной памяти, Postgresql, в отличие от теперь уже всех других баз, работать не будет.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 20-Авг-16 18:41 
логинишься ты на gmail, а там перед загрузкой мейлбокса вопрос "нужен вам ACID или нет". "конечный пользователь", ага

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 21-Авг-16 13:20 
Конечный пользователь базы данных - администратор базы данных. А "логинишься ты на gmail" - это конечный пользователь сервиса gmail

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено rob pike , 17-Авг-16 23:17 
Совсем не извращение.
Как и, например, бизнес-логика на нормальных ЯП внутри СУБД.
Намного большее извращение - это испольтзовать тот же PostgreSQL как "dumb storage" и писать отдельные "серверы бизнес-логики", в которых 80% занимает кривая, косая и забагованная реализация той функциональности (прежде всего связанная с транзакциями и целостностью), которая в СУБД уже есть.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено анонимУася , 18-Авг-16 09:49 
>Как и, например, бизнес-логика на нормальных ЯП внутри СУБД.

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


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Лютый жабист_ , 22-Авг-16 10:50 
"серверы бизнес-логики", в которых 80% занимает кривая, косая и забагованная реализация той функциональности (прежде всего связанная с транзакциями и целостностью), которая в СУБД уже есть."

Что за appserver-ы не умеющие JTA? Если есть, зачем их взяли, когда есть полностью бесплатные и опенсорсные? По количеству разнообразнейших либ промышленного качества никакому СУБД не угнаться за жабой.

На моих workload-ах жабовый аппсервер по скорости дерёт Оракла с его plsql в десятки раз. Скорость разработки на plsql чего-то более сложного чем полстранички кода тоже в разы дольше.
Так что ты всё правильно говоришь с точностью до наоборот.


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 19-Авг-16 10:23 
Ну и будет так волочиться в ногах прогресса. В MySQL уже скоро найтивное партицирование будет, а они inmemory запилить не могут, который теперь есть во всех базах.

"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Aleks Revo , 17-Авг-16 17:06 
Пользуйтесь, не стесняйтесь - как раз для всего вышеперечисленного создавалось.
http://www.garret.ru/imcs/user_guide.html

Ничем не хуже, даже почти такие же извращения с запросами )))

А если совсем уже хочется странного, то вот: https://wiki.postgresql.org/images/6/65/Pgopencl.pdf


"Для MongoDB представлено хранилище в оперативной памяти Perc..."
Отправлено Аноним , 19-Авг-16 18:19 
В свое время только по этой причине и не перешли на постги, а с появлением tokudb смысл и вовсе отпал