Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Помогите написать embedded NoSQL DB на Java


Автор: CSharpProgrammer 22.9.2010, 20:10
Доброго всем времени суток!

Собственно решил написать простенькую embedded NoSQL DB на Java, разобраться как работают уже существующие решения довольно сложно. В общем подскажите пожалуйста от чего отталкиваться, какой минимальный функционал нужен, какие алгоритмы используются и все в таком духе.  За любые материалы и примеры буду признателен!

Автор: LSD 22.9.2010, 20:17
Цитата(CSharpProgrammer @  22.9.2010,  21:10 Найти цитируемый пост)
какой минимальный функционал нужен

Встречный вопрос, если ты сам не знаеш какие функции тебе нужно, то нафига вообще писать свою embedded NoSQL DB?

А так HashMap + сериализация, вот тебе и простенькая embedded NoSQL DB на Java smile 

Автор: Skynin 22.9.2010, 21:11
NeoDatis не сложная. Рекомендую посмотреть ее.

Автор: CSharpProgrammer 23.9.2010, 01:03
Цитата(LSD @ 22.9.2010,  20:17)
Цитата(CSharpProgrammer @  22.9.2010,  21:10 Найти цитируемый пост)
какой минимальный функционал нужен

Встречный вопрос, если ты сам не знаеш какие функции тебе нужно, то нафига вообще писать свою embedded NoSQL DB?

А так HashMap + сериализация, вот тебе и простенькая embedded NoSQL DB на Java smile

Простите не правильно видимо выразился, в общем задача состоит в следующем.

есть 2 структуры типа key-value 

(число / набор чисел)

Код

1) Long / Set<Long>
2) Long / Set<Long>
...
n) Long / Set<Long>


и (число / обьект)

Код

1) Long / Object
2) Long / Object
...
n) Long / Object


и соответственно классы для хранения этих структур

Код

class Object
{
    long id;
    List<OtherObject> list;
}

class OtherObject
{
    long id;
    int index;
}


основная сложность в том что обьектов класса Object порядка миллиона, и каждый Object содержит несколько миллионов OtherObject.  Необходимые операции это: Добавить OtherObject к списку остальных если такого еще нет, найти общие OtherObject в двух Object и т.д. Естественно подымать все в память нет возможности, поэтому скорей всего нужно отталкиваться от работы с хэшами. Поэтому Интересуют принципы работы NoSQL баз, алгоритмы и прочее.

P.S. Все это можно организовать в виде графа, Object - узел, а OtherObject - это ребро. Между двумя узлами возможно до нескольких миллионов ребер. Инф-а про графо-ориентированные БД и принципы их работы, тоже приветствуется. И в целом как пишутся движки такого типа баз рассчитанных на high-load.

Автор: CSharpProgrammer 23.9.2010, 01:29
Цитата(Skynin @ 22.9.2010,  21:11)
NeoDatis не сложная. Рекомендую посмотреть ее.

Спс, сейчас посмотрю.

Автор: LSD 23.9.2010, 17:49
Цитата(CSharpProgrammer @  23.9.2010,  02:03 Найти цитируемый пост)
основная сложность в том что обьектов класса Object порядка миллиона, и каждый Object содержит несколько миллионов OtherObject.  Необходимые операции это: Добавить OtherObject к списку остальных если такого еще нет, найти общие OtherObject в двух Object и т.д. Естественно подымать все в память нет возможности, поэтому скорей всего нужно отталкиваться от работы с хэшами. Поэтому Интересуют принципы работы NoSQL баз, алгоритмы и прочее.

Пишешь свой Map  в нем уже реализуешь сохранение на диск и загрузку с диска. Это если вкратце.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)