The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Сервис Digg мигрирует с MySQL на БД Cassandra

11.03.2010 17:43

Разработчики одного из крупнейших сетевых ресурсов Digg.com приняли решение отказаться от использования СУБД MySQL в пользу распределенной БД Apache Cassandra, исходные тексты которой были открыты компанией Facebook два года назад. Работа по уходу Digg от использования SQL заняла шесть месяцев, за которые не просто были переписаны все обеспечивающие работу сайта приложения, но и была полностью переработана архитектура клиентской и серверной части проекта.

Главные мотивы ухода от использования MySQL: усложнение решений, при необходимости обеспечения высокой производительности и проблемы при интенсивной записи данных. Рост нагрузки заставлял разработчиков пересматривать стратегию горизонтального и вертикального партицирования (сегментирование записей по хранилищам в соответствии с определенным алгоритмом привязки к диапазону хранимых значений), при этом использование реляционной схемы приводило к большим накладным расходам. Переход на Cassandra связан не только с переходом на более оптимальную схему хранения данных, миграция также позволит дополнительно решить проблемы с синхронизацией данных при разнесении серверов по нескольким дата-центрам, повысит надежность хранения данных за счет их дублирования на разных машинах, даст возможность возложить на БД всю работу по замещению узлов в случае сбоя.

БД Cassandra написана на языке Java и объединяет в себе полностью распределенную hash-систему Dynamo. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности. Cassandra относится к категории хранилищ повышенно устойчивых к сбоям: помещаемые в БД данные автоматически реплицируются на несколько узлов распределенной сети или даже равномерно распределяются по нескольким дата-центрам. При сбое узла, его функции на лету подхватываются другими узлами. Добавление новых узлов в кластер Cassandra также производится на лету, без дополнительного ручного вмешательства и переконфигурирования других узлов.

В процессе перевода Digg на NoSQL-архитектуру изменению подвергся и код Cassandra, в который был добавлен ряд оптимизаций производительности, реализована новая схема кеширования на уровне столбцов, расширены средства по организации атомарных счетчиков, добавлена возможность одновременной выборки нескольких записей, переработана система ведения логов. В настоящий момент ведется работа по интеграции кода с реализацией всех улучшений в основное дерево исходных текстов Cassandra.

  1. Главная ссылка к новости (http://about.digg.com/node/564...)
  2. OpenNews: Распределенная БД Cassandra принята в число основных проектов Apache
  3. OpenNews: Проект Twitter представил раздел, посвященный своим открытым разработкам
  4. OpenNews: Социальная сеть Facebook вошла в число спонсоров Apache Software Foundation
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/25758-Cassandra
Ключевые слова: Cassandra, mysql, database
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, аноним (?), 18:16, 11/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ну любой отход от SQL можно только приветствовать. БД на Java, правда, вызывает некое недоумение.
     
     
  • 2.2, аноним (?), 18:47, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Почему?
     
     
  • 3.3, Аноним (-), 19:07, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Видимо это как-то связано с тем, что java очень сильно нагружает процессор и жрёт оперативку.
     
     
  • 4.4, Andrew Kolchoogin (?), 19:12, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Видимо это как-то связано с тем, что java очень сильно нагружает процессор
    > и жрёт оперативку.

    Ага. А SQL процессор не нагружает и оперативку не жрёт. :)

     
     
  • 5.32, User294 (ok), 18:20, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Ну дык сиквель и логику запросов какую педалит? Ессно при этом он не может не жрать. Чудес не бывает - запросы или уж навороченны, или быстрые.
     
  • 4.7, Tav (ok), 19:56, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > Видимо это как-то связано с тем, что java очень сильно нагружает процессор и жрёт оперативку.

    Пока одни кормятся мифами, другие извлекают профиты.

     
     
  • 5.10, аноним (?), 20:55, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Увы да. Многие считают, что у java оверхеда нет или он находится на приемлимом уровне, а другие тем временем ставят в 4 раза меньше серверов для тех же задач.
     
     
  • 6.12, uZver (??), 21:46, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Увы да. Многие считают, что у java оверхеда нет или он находится
    >на приемлимом уровне, а другие тем временем ставят в 4 раза
    >меньше серверов для тех же задач.

    Пусть ставят. Если есть готовый софт, то отлично ;)

    Отличие только в скорости разработки. Потому чем сложнее софт, тем больше стремление применить для него языки высокого уровня Java/C#. Результат получается раньше и требует меньше программистов для реализации.

    Это огромная экономия средств окупающая и дополнительные сервера и оперативку. Самое дорогое в создании софта это люди, а не сервера или лицензии. Плюс выход на рынок 2-3 месяца раньше чем конкуренты это просто пипец как много.


    PS + коммерческого OpenSource больше всего на java - тот же Apache это почти все java-проекты.

     
     
  • 7.14, аноним (?), 21:53, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вот вот, знаем мы этот ынтерпрайзный тяп-ляп подход. Больше добавить нечего.
     
     
  • 8.17, uZver (??), 22:02, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Сделайте лучше никто не мешает сделать аналог Hadoop или HBase или Cassandra ... текст свёрнут, показать
     
     
  • 9.34, kit (??), 20:37, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    СУБД Cache ... текст свёрнут, показать
     
     
  • 10.37, uZver (??), 10:37, 14/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Ну точно не эта Oracle или PostgreSQL для маленьких лаб ... текст свёрнут, показать
     
  • 8.21, ДяДя (?), 22:10, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Скажите это, например, Google Чего-то я не замечал, чтобы тормозил Gmail, поиск... текст свёрнут, показать
     
     
  • 9.22, аноним (?), 22:40, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • –5 +/
    С такими-то кластерами кшна не будет Подумаешь, по машине на клиента Тут пробе... текст свёрнут, показать
     
     
  • 10.38, Sergey (??), 11:41, 16/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А в чем проблема то от СО2 Или вы верите в глобальное техногенное потепление н... текст свёрнут, показать
     
  • 9.33, User294 (ok), 18:21, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А вы поставьте столько же серверов - у вас тоже ничего тормозить не будет ... текст свёрнут, показать
     
     
  • 10.36, ander (??), 13:29, 13/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Не в серверах дело, а в масштабируемости ... текст свёрнут, показать
     
  • 6.30, Tav (ok), 17:11, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь довольно подробно рассмотрен вопрос производительности JVM, включая случаи, когда выгоднее использовать C, случаи когда Java эффективнее и спорные случаи:
    http://blogs.azulsystems.com/cliff/2009/09/java-vs-c-performance-again.html
     
  • 6.39, Гыгыка (?), 17:07, 02/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ага. Или на ассемблере все переписывают и вообще обходятся нетбуком...

    Есть еще понятия скорость разработки и много других интересных показателей.
    Вот как Go в продакшн можно будет использовать - тады другой будет разговор.

    Но ведь и там жрущее ресурсы GC. Оно не зря придумано. Оно реально повышает стабильность серверных приложений и позволяет избегать очень трудоемкой отладки.

     
  • 3.6, m0xf (ok), 19:55, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    java выполняется в виртуальной машине, что несколько снижает производительность по сравнению с нативным кодом.
     
     
  • 4.13, uZver (??), 21:49, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >java выполняется в виртуальной машине, что несколько снижает производительность по сравнению с
    >нативным кодом.

    практически это может оказаться заблуждением ибо JIT. с JIT может сравниться только gentoo пересобранная под конкретную машину.

    плюс автоматическое управление памятью может быть намного быстрее ручного.

     
     
  • 5.19, ДяДя (?), 22:06, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Правильно, товарищ ! :-)

    Тормозить может сборщик мусора, если настроить неправильно.

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

    В большинстве случаев в критичных местах выполняется машинный код, который оптимизирован под данный процессор JIT-ом.

     
     
  • 6.27, pro100master (ok), 00:45, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Тормозить может сборщик мусора, если настроить неправильно

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

     
     
  • 7.29, fi (ok), 13:47, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Как показала жизнь, правильно писать код на java удается совсем не многим, и N+1 gc по прежнему плохо справляется с мусором с любыми настройками.
     
     
  • 8.41, Гыгыка (?), 17:18, 02/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Как показала жизнь - Cassandra реально живет и обслуживает один из самых нагруже... текст свёрнут, показать
     
  • 5.35, anonymous vulgaris (?), 21:56, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >практически это может оказаться заблуждением ибо JIT. с JIT может сравниться только gentoo пересобранная под конкретную машину.

    Практически-тестово гораздо хуже

    http://www.mobydisk.com/softdev/techinfo/speedtest/index.html

    It looks like JIT comes in at about half the speed of a purely compiled language.

    а практически-практически все еще хуже. Сравните оффис без дотнета и новый с дотноетом. Или автокад.

     
  • 4.40, Гыгыка (?), 17:09, 02/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > java выполняется в виртуальной машине, что несколько снижает производительность по сравнению
    > с нативным кодом.

    Сударь теоретиг? Плохой теоретиг: не знает, что JIT существует уже очень много лет как.

     
  • 2.16, ДяДя (?), 21:58, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вам известно такое понятие, как "компромисс" ?

    Один из примеров: сервер купить проще, чем нанять лишних людей и увеличить сроки внедрения.

     
     
  • 3.26, IGX (?), 23:09, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Вам известно такое понятие, как "компромисс" ?
    >
    >Один из примеров: сервер купить проще, чем нанять лишних людей и увеличить
    >сроки внедрения.

    Вот именно!

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

     
  • 3.31, аноним (?), 18:00, 12/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Известно. Поэтому вместо 10 серверов под жаву я куплю 2 под C/C++. Разумеется, если нужная мне функциональность реализована на C++. Тут у java преимущество в скорости разработки, но это только подтверждает мой тезис - java/mono годны только для прототипирования.
     
     
  • 4.42, Гыгыка (?), 17:46, 02/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Известно. Поэтому вместо 10 серверов под жаву я куплю 2 под C/C++.
    > Разумеется, если нужная мне функциональность реализована на C++. Тут у java
    > преимущество в скорости разработки, но это только подтверждает мой тезис -
    > java/mono годны только для прототипирования.

    В современной жизни - скорость разработки это важно.
    Сколько там миллиардов у Цукерберга (создатель FaceBook). А ведь идея то в воздухе носилась. Он просто первый успел.

     

  • 1.9, 310dej (?), 20:42, 11/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    "Java" и  "хорошо работает" в одном предложении встречаются редко (Кто-то из lxf упомянул этими словами Apache Ant). Ля скептре, но по-моему реляционные БД клайстеризуются и позволяют программировать внутри себя. Да и ресурсы по сравнению с монстром по имени жаба - все равно, что Камаз 5320 с Дафом FX равнять. Да представляю - российские перевозчики содятся на Камазы: "Москва умрет с голоды за 2 месяца". Но это лирика...
     
     
  • 2.15, uZver (??), 21:56, 11/03/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >"Java" и  "хорошо работает" в одном предложении встречаются редко (Кто-то из
    >lxf упомянул этими словами Apache Ant). Ля скептре, но по-моему реляционные
    >БД клайстеризуются и позволяют программировать внутри себя. Да и ресурсы по
    >сравнению с монстром по имени жаба - все равно, что Камаз
    >5320 с Дафом FX равнять. Да представляю - российские перевозчики содятся
    >на Камазы: "Москва умрет с голоды за 2 месяца". Но это
    >лирика...

    Мало вы софта видели ;) я даже VoIP сервер видел полностью на java, причем это было лет 5 назад сделано )))

    А реляционные СУБД практически не кластеризуются. Причем кластера стоят бешенных денег, намного больших чем просто набор (сервера + СУБД) в количестве нод.

    Oracle RAC имеет 4 ноды, больше то ли не тянет, то ли не рекомендуется ибо скорость падает. Плюс ему нужно внешнее хранилище ибо работает через shared data. Плюс ему еще и  сертифицированные ОС требуются. В итоге куча бабла =) Для больших инет проектов цена лицензий тоже не последняя вещь.

    Кассандра вещь бесплатная плюс она ОЧЕНЬ быстрая на запись, а РСУБД кластерами как раз на запись то медленные.

     
  • 2.43, Гыгыка (?), 17:47, 02/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > "Java" и  "хорошо работает" в одном предложении встречаются редко (Кто-то из
    > lxf упомянул этими словами Apache Ant). Ля скептре, но по-моему реляционные
    > БД клайстеризуются и позволяют программировать внутри себя. Да и ресурсы по
    > сравнению с монстром по имени жаба - все равно, что Камаз
    > 5320 с Дафом FX равнять. Да представляю - российские перевозчики содятся
    > на Камазы: "Москва умрет с голоды за 2 месяца". Но это
    > лирика...

    Cassandra работает. На самом деле работает....

     

  • 1.11, Filosof (ok), 21:25, 11/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ну мы хадупом шас балуемся. Пока перспективы видны. Посмотрим до чего доекспереиентируемся
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру