|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Поковырял после работы orientdb. Недолго, где-то часа полтора, но есть определённые мысли на тему: - Действительно шустро бегает на первый взгляд - Просто устанавливается - В комплекте есть удобности, до которых я, правда, не дошёл, но галочку поставим - id состоит из id "кластера" и "clusterPosition", я уж было подумал, что это инкрементное поле и хотел записать в недостаток. Но вот сейчас, пока писал это сообщение, решил докопаться до сути и найти как этот clusterPosition вычисляется. Прошёлся по коду, и это оказался отступ от начала файла базы делённый на размер ячейки памяти 15 байт. Там ищется свободное место, если находится - выдаётся, если не находится, то выделяется новое. В целом подход неплохой и позволяет быстро делать итератор по бд, просто увеличивая позицию ячейки памяти на 1. Надо будет поковырять их индекс, любопытно. А теперь о грустном: - api ужасно выглядит, после thrift мне, конечно, ничего не страшно, но это не сильно лучше. Имхо они просто надругались над java. - встроенный язык построения запросов у меня отказался работать. Запрос просто запускается и такое ощущение, что начинается вечный цикл. Не дебажил. Пробовал запрос на java и sql, итог один. В общем смог получить только get запрос, который, к слову, там тоже через одно место. - примеры из документации частично deprecated, а альтернативы не предоставлено - запускал его на виртуалке, после 2 млн записей он зажевал почти всю оп. Хотя её там было мало - всего 2 гига, но всё-таки как-то некрасиво с его стороны. Запущу запись 500 млн строк на ночь, надеюсь виртуалка не крякнется))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 02:59 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
В общем по итогу загрузилось 44 млн и кончилось место на диске. Совсем забыл его выделить побольше. Однако хороший факт: база на самом деле не так уж сильно жрёт оп, она просто забирает под себя определённый размер памяти и больше ни-ни. Причём после того, как место кончилось, она естественно упала. Но когда я её перезапустил, она сказала, что соединение было закрыто некорректно и быстренько восстановила сама себя. Приятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 10:47 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
О, а вот и логическое объяснение. База разделена на куски по 500 метров. Соответственно файл мапится в память и данные загружаются в него, а потом через некоторое время дампятся, вот он и жрёт 500 метров +- немного. Не знаю правда как это всё дело будет вести себя при конкурентной нагрузке, проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 10:52 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Valery ShiskinЙуный джавистЪ, Можно нам глупым поинтересоваться, что имеется ввиду под "нормальными технологиями" ? это СУБД, наиболее часто встречающиеся в соседней ветке - Сравнение СУБД и Работа. k-v база - там не встречается. Т.е. это СПЕЦИФИЧЕСКАЯ ЗАДАЧА, о которой молчит автор. ЗЫ. Самый быстрый k-v доступ у 2-х файлов. В одном ключи (смещение от начала), в другом данные. А дальше начинаются - жертвы, на которые можем пойти (оперативка\транзакции\OLAP-OLTP\...) ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 11:31 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Petro123, Вобще-то, есть еще ветка NoSql базы данных, а k-v - это сокращение от NoSql типа Key/Value, поскольку есть еще типа Document и Graph (по крайней мере так на сегодня принято подразделять NoSql СУБД). АлексейС, судя по всему, знает, что делает и он прекрасно знает, что такое SQL субд и почему они его не устраивают. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 12:58 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Кстати, Алексей, если для Вас не представляет преграды Scala технологии, то Вы можете посмотреть на Lift framework. Из коробки он поддерживает MongoDB. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 13:02 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Valery Shiskin, конечно, я преувеличил :), т.к не люблю одностороннего освещения. Типа: "нужна скорость, но БД много жрёт оперативки" Потом, причём тут Java? "NoSql базы данных" тут тоже не так много - (выводы делает каждый сам). Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 13:08 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
авторk-v база - там не встречается. Т.е. это СПЕЦИФИЧЕСКАЯ ЗАДАЧА, о которой молчит автор. Мне интересно - чем MySQL с одной таблицей (key,value) отличается от k-v базы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 15:37 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Йуный джавистЪМне интересно - чем MySQL с одной таблицей (key,value) отличается от k-v базы? Если отвязать SQL парсер и прочую RDBMS шелуху, то результат не будет особо отличатся. Есть вроде даже плагин какой-то для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 15:42 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Йуный джавистЪ, оверхедом или интелиссенсом, но это к автору. Захочет - скажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 15:45 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
авторЕсли отвязать SQL парсер MySQL 5.0 provides support for server-side prepared statements. This support takes advantage of the efficient client/server binary protocol implemented in MySQL 4.1, provided that you use an appropriate client programming interface. авторпрочую RDBMS шелуху, Какую? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 16:00 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Йуный джавистЪMySQL 5.0 provides support for server-side prepared statements. This support takes advantage of the efficient client/server binary protocol implemented in MySQL 4.1, provided that you use an appropriate client programming interface. Это не то. Йуный джавистЪКакую? Вот статья. Там же ссылка на плагин, который недавно вышел. http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 16:04 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
АлексейСвстроенный язык построения запросов у меня отказался работать. Запрос просто запускается и такое ощущение, что начинается вечный цикл. Не дебажил. Пробовал запрос на java и sql, итог один. В общем смог получить только get запрос, который, к слову, там тоже через одно место. Я так понимаю, объектная обёртка и особенно sql - пока самые непроработанные места. К тому же, если работать через сервер, то и там могут быть глюки вокруг ядра СУБД. Имхо, для себя лучше работать с самым низким level-api, так по скорости лучше и ближе по духу к key-value. АлексейСО, а вот и логическое объяснение. База разделена на куски по 500 метров. Соответственно файл мапится в память и данные загружаются в него, а потом через некоторое время дампятся, вот он и жрёт 500 метров +- немного. Не знаю правда как это всё дело будет вести себя при конкурентной нагрузке, проверю. Хм..., когда я orientdb немного щупал, то больших расходов оперативки не замечал. Вот вываливание всяких непонятных эксцепшинов на ровном месте - вполне хватало. Также заметил затыки на массовом удалении данных - может оказаться проблемой (хотя, если для задачи рассматривается leveldb, то наверное массовых удалений и модификаций записей не ожидается). Я не помню, был ли тогда mmap в потрохах (и в целом, я в потроха мало влазил), но по поводу памяти у них на форуме периодически появлялись всякие обсуждения, похоже до сих пор ещё экспериментируют. Одним словом, похоже с сыростью ещё не покончено. Имхо, штука ещё стрёмная. С другой стороны, вроде есть сторонние энтузиасты, которые пилят API для скалы и кложуры. Значит, уже как-то используют. Там на местном форуме вроде есть наши ребята, которые пилят какую-то индексацию для коллекций внутри документов (если я не ошибаюсь), может есть смысл с ними связаться, скажут чего-нибудь по делу. Как альтернатива для orientdb можно глянуть на Neo4j - вроде эту штуку уже используют, но там нужно смотреть на лицензии, а также, вроде, orientdb уделывает по перфомансу и пр. эту графовую базку (так утверждают те, кто гонял orientdb). И сугубо моё личное имхо по поводу NoSql. Я не спец в этих вопросах и пока не решился на nosql-использование (и не было пока задач, чтобы нагнуло для этого), но я наблюдаю такую картину: - эффективная реализация nosql на java - пока под большим вопросом. Если я не ошибаюсь, то в той же cassandre внедряется управление памятью через нативный код. Можно почитать с какими проблемами столкнулись при разработке JGit (гита на жабе) и почему по перфомансу не догнать оригинал, на какие хаки пошли в disruptor и почему теперь не всё работает на семёрке, и пр. - сейчас видна тенденция применения leveldb в качестве бакэнда для ряда nosql, причём вместо более традиционных dbm-подобных систем. Значит, профит есть, нужно хорошенько оценить. - если для решения задачи необходимы дисковые операции, то есть смысл оценить "ускорители" уже проверенных традиционных баз, типа HandlerSocket для MySQL (для постгресса что-то делал скайп, но вроде в основном для "распределялки" данных). - для тех, кому нужна супер-оперативность, пока всё-таки лучше оказались базы в памяти типа Tarantool, Redis. Алексей, обратитесь на форум Tarantool-а. Как я понял, они там у себя в mail.ru или одноклассниках используют стек Voldemort + Tarantool, логи баз и их снэпшоты потихоньку в фоновом режиме перекачивают в обычные СУБД и воюют с ними дальше отдельно. Может их модель что-то полезное покажет. По поводу Voldemort. Как я понял "хеш-распределялка" особо не нужна, но всё-таки это готовое, причём используемое, сетевое решение. Может есть смысл его повертеть с разных сторон на предмет правильной его готовки, и бакэнды к нему разные прикручиваются (сам я на него не смотрел). А так, чтобы и лёгкая СУБД была и готовый лёгкий сетевой сервис, кроме orientdb толком ничего не вспоминается. Когда-то на глаза попадалась ограниченная реализация SQLite на чистой жабе, но ссылку быстро найти не удалось, и не помню я, был ли там сервер или это просто эмуляция JDBC-драйвера. Алексей, если для своей задачи что-то погоняете (эту orientdb, leveldb, здесь ещё указанную JDBM2, Voldemort и пр.) и поделитесь с общественностью, то мы все здесь на форуме будем признательны, ибо реальная практика по всяким NoSql весьма редкое явление. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 17:04 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Йуный джавистЪавторЕсли отвязать SQL парсер MySQL 5.0 provides support for server-side prepared statements. This support takes advantage of the efficient client/server binary protocol implemented in MySQL 4.1, provided that you use an appropriate client programming interface. авторпрочую RDBMS шелуху, Какую? Все равно слишком много шелухи даже если использовать prepared statements. В поддержку этого мнения говорит тот факт, что в mysql 5.6 появилось memcached api. Официально, то есть совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 17:43 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
netwindВ поддержку этого мнения говорит тот факт в поддержку другого мения говорит факт наличия шелухи у Спринга. Но, говорят: "не надо, просто - не используй". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 17:49 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Petro123netwindВ поддержку этого мнения говорит тот факт в поддержку другого мения говорит факт наличия шелухи у Спринга. Но, говорят: "не надо, просто - не используй". Но тут другое дело. Нельзя (было) использовать mysql без шелухи. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 18:02 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
netwind, всегда мечтал узнать, для чего их применяют k-v или POJO-DB ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 18:09 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Petro123netwind, всегда мечтал узнать, для чего их применяют k-v или POJO-DB Что ж тут не понятного? Для всего того же, что и обычно применяют. Подобный интерфейс позволяет опустить многие стадии обработки SQL запросов и добиться высокой скорости выполнения критических секций. Причем, сложную логику, отчеты и прочий унаследованный код, можно продолжать разрабатывать традиционно на SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 18:18 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
АлексейС, Мы все почему-то забыли об Oracle key/value NoSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 19:51 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
netwind, Нет. Уж слишком общие слова: ". . . там же где и обычные бд. . ." ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 19:54 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Вот только что случайно наткнулся на ресурсы по поводу jdbm: - автор http://www.mailinglistarchive.com/html/general@db.apache.org/2012-02/msg00000.html]предлагает включить проект в апачевские лавры; - в этом блоге автор рассказывает про новый jdbm3, где можно узреть, какие нюансы есть в текущей версии jdbm2 и что хотят улучшить; - сам проект jdbm3. Пока ещё альфа. Как я понимаю, библиотекой пользуются, возможно для жабы очень производительное решение. Но нужен свой "сервер". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 20:01 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Petro123netwind, Нет. Уж слишком общие слова: ". . . там же где и обычные бд. . ." Что нет? nosql-интерфейсы в mysql есть и их целых два. Если дошло до того, что включен в основной дистрибутив, значит это уже не просто блажь тех, кто недоучил SQL. Переубеждать нет смысла. Вы можете спокойно продолжать игнорировать явление, а мы будем получать дополнительную прибыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 20:54 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Valery ShiskinАлексейС, Мы все почему-то забыли об Oracle key/value NoSQL. Я тоже о ней ничего не слышал. Сейчас бегло посмотрел, что за хренотень такая. На сайте оракула какая-то мутная инфа, даже про лицензии ничего не увидел. Почитал этот блог вместе с комментариями. Как я понял, это жабская беркли-дб на стероидах, т.е. с хеш-распределялкой по нодам + репликация и прочие плюшки. Имхо, ТС-ру не подойдёт. Судя по описаниям та же jdbm2 ощутимо быстрее берклей и по лицензии приятней. Да и не нужна распределенность. Имхо, если orientdb пройдёт конкурс по неглючности (в чём я сомневаюсь), то это будет лучше выбор. А так чувствую, что дело закончится Voldemort + leveldb или jdbm2 (что возможно лучше, чем пока мало используемый порт на жабу leveldb), или всё-таки придётся реализовать свой сервак под те же либы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 21:18 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
netwind, удивительно, как вы читаете "нет", и не видите после него фразы "общие слова". Лично меня интересует конкретика и цифры. Например - "Я, netwind, делал проект и выбрал технологию ХХХХ по такой причине... ". "Явление" - пока громко сказано. Есть такое "явление", что у SQL-щиков и NO-SQLщиков взаимная неприязнь к продуктам. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 21:34 |
|
Нужна очень быстрая k-v база, с быстрым сетевым java интерфейсом
|
|||
---|---|---|---|
#18+
Petro123netwind, удивительно, как вы читаете "нет", и не видите после него фразы "общие слова". Лично меня интересует конкретика и цифры. Например - "Я, netwind, делал проект и выбрал технологию ХХХХ по такой причине... ". "Явление" - пока громко сказано. Есть такое "явление", что у SQL-щиков и NO-SQLщиков взаимная неприязнь к продуктам. Вы не допускаете, что существуют другие области для java, кроме еврейского банковского процессинга, где "стоимость" транзакции бд необычно низкая? в миллионы раз ниже. Прежде всего, это машинно-генерируемые транзакции - всевозможные приложения телекома, телеметрии, обработки научных данных, онлайн-игры, торренты в конце концов. И все они хотят работать с SQL, потому как все программисты так или иначе изучали СУБД. Но даже с помощью prepared statements не удается достичь приемлемой "плотности" обработки транзакций. (я не имею ввиду масштабируемость. накупить серверов или арендовать ресурсы в облаке любой дурак может). Но вот с помощью nosql-интерфейсов к привычному mysql эти возможности вдруг открываются. Нет, мне лично не требовалось писать торент-трекеры (что можно посчитать за счастье). Я скачал, помоделировал и положил на полку до того случая когда мне оно понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2012, 23:53 |
|
|
start [/forum/topic.php?fid=59&msg=37694214&tid=2121648]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 174ms |
0 / 0 |