Неоригинальный аспект

Я смотрел на масштабируемость Neo4j и читал документ, написанный Дэвидом Монтагом в январе 2013 года.

Относительно шарнирного аспекта, он сказал, что первый выпуск 2014 года будет первым решением.

Кто-нибудь знает, было ли это сделано или его статус, если нет?

Спасибо!

Ответы

Ответ 1

Раскрытие информации: Я работаю в качестве продукта VP для Neo Technology, спонсора базы данных с открытым исходным кодом Neo4j.

Теперь, когда мы только что выпустили Neo4j 2.0 (на самом деле 2.0.1 сегодня!), мы начинаем выпуск 2.1, который в основном ориентирован (даже больше) на производительность и масштабируемость. Это увеличит верхние пределы графика до эффективно неограниченного числа объектов и улучшит различные другие вещи.

Позвольте мне сначала задать некоторый контекст, а затем ответить на ваш вопрос.

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

Практически говоря, есть клиенты Neo4j (включая Snap Interactive и Glassdoor) с около миллиарда человек в своем социальном графике... во всех случаях за активным и сильно пострадавшим веб-сайтом, который обрабатывается сравнительно скромным Neo4j кластеров (не более 5 экземпляров). Итак, одна ключевая особенность: Neo4j сегодня невероятная вычислительная плотность, и поэтому мы регулярно видим довольно небольшие кластеры, обрабатывающие существенно большую производственную нагрузку... с очень быстрым временем отклика.

Подробнее о текущей архитектуре можно найти здесь: www.neotechnology.com/neo4j-scales-for-the-enterprise/ Список клиентов (включая такие компании, как Wal-Mart и eBay) можно найти здесь: neotechnology.com/customers/ Один из крупнейших в мире посылок перевозчики-носители используют Neo4j для маршрутизации всех своих пакетов в режиме реального времени с пиками 3000 операций маршрутизации в секунду и нулевым временем простоя. (Это, возможно, самое большое в мире и наиболее критическое использование базы данных графов и базы данных NOSQL, хотя, к сожалению, я не могу сказать, кто это.)

Итак, в некотором смысле, tl; dr состоит в том, что если вы еще не такие большие, как Wal-Mart или eBay, то вы, вероятно, все в порядке. Это немного упрощает его. Существует 1% случаев, когда вы сохраняете транзакционную нагрузку на запись в 100 тыс. В секунду. Однако даже в тех случаях часто не всегда нужно загружать все эти данные в график реального времени. Мы обычно советуем людям делать некоторую агрегацию или фильтрацию и приводить в график только более важные вещи. Интюйт хорошо рассказал об этом. Они фильтруют миллиарды транзакций B2B в гораздо меньшее количество совокупных ежемесячных транзакционных отношений с агрегированными счетами и валютными суммами по направлениям.

Введите осколки... В наши дни Шардинг приобрел большую популярность. Это во многом благодаря другим трем категориям NOSQL, где объединения являются анти-шаблонами. Большинство запросов включают чтение или запись только одного фрагмента дискретных данных. Так же, как присоединение - это анти-шаблон для хранилищ ключей и баз данных, окантовка - это анти-шаблон для баз данных графов. Я имею в виду, что... самая лучшая производительность будет иметь место, когда все ваши данные будут доступны в памяти в одном экземпляре, потому что прыжки назад и вперед по всей сети всякий раз, когда вы читаете и записываете, значительно замедлят ситуацию, если вы действительно не очень умны о том, как вы распространяете свои данные... и даже тогда. Наш подход был двояким:

  • Сделайте как можно больше умных вещей, чтобы поддерживать чрезвычайно высокие объемы чтения и записи, не прибегая к очертаниям. Это дает вам лучшую и прогнозируемую задержку и эффективность. Другими словами: если мы можем быть достаточно хорошими, чтобы поддержать ваши требования без осколков, это всегда будет лучшим подходом. В приведенной выше ссылке описаны некоторые из этих трюков, в том числе шаблон развертывания, который позволяет обманывать ваши данные в памяти, не накладывая их на диск (трюк, который мы называем кэшированием). Есть другие трюки вдоль подобных линий, и больше сходит с щуки...

  • Добавьте вторичный шаблон архитектуры в Neo4j, который поддерживает очертание. Зачем это делать, если лучше избегать осколков? Поскольку все больше людей находят больше возможностей для графиков, а объемы данных продолжают расти, мы думаем, что в конечном итоге это станет важной и неизбежной вещью. Это позволит вам запустить весь Facebook, например, в одном кластере Neo4j (довольно большой)... не только социальную часть графика, с которой мы можем справиться сегодня. Мы уже много работали над этим и создали архитектуру, которая, как мы полагаем, уравновешивает многие соображения. Это многолетнее усилие, и хотя мы могли бы очень легко выпустить версию Neo4j, которая наивно (что, несомненно, будет очень популярно), мы, вероятно, этого не сделаем. Мы хотим сделать это правильно, что равнозначно ракетостроению.

Ответ 2

TL; DR С 2018 дней осталось neo4j по-прежнему не поддерживает sharding, как обычно считается.

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

Когда neo4j говорит о sharding, они ссылаются на кеширование частей базы данных в памяти: разные фрагменты кэшируются на разных реплицированных узлах. Это отличается от говорящего mysql sharding, в котором каждый node содержит только часть общих данных.

Вот краткий обзор их "взятия" по масштабируемости: их термин продукта "Высокая доступность" https://neo4j.com/blog/neo4j-scalability-infographic/

введите описание изображения здесь

. Обратите внимание, что High Availability не должно быть таким же, как Scalability: поэтому они фактически не поддерживают последнее в традиционном понимании термина.