kika: (Default)
[personal profile] kika
Я что-то не втыкаю, прошу помощи зала. Я хочу хранить JSON объекты в какой-нибудь простой базе, при этом не хочу руками заводить индексы. Хочу чтобы база сама парсила объекты и если в нем есть какой-то ключ, то по этому ключу заводила бы сама индекс. То есть я скажем пишу туда { name: "Vasya", surname: "Pupkin" }, и она заводит два индекса, добавляю в какие-то объекты birthday: "02/20/1969" - она создает третий индекс. Объектов - ну максимум десятки тысяч, то есть в принципе все можно держать в голове. Хочется без тяжелого рантайма, инсталляций с триллионом prerequisites и прочего девопс-кошмара.

В принципе это наверное можно соорудить вокруг Редиски. Наверняка почти любая RDBMS с этим справится тоже. Но хочется избежать "сооружения" и не хочется таскать за собой постгресс с кучей зависимостей или мускль со своими капризами.

Можно это соорудить вокруг Дивана (Кауча), если написать внешний кауч-процесс, который будет следить за новыми объектами и добавлять индекс при необходимости. Наверное я так и сделаю, если не найду ничего лучше, Кауч хотя бы заметно проще большинства RDBMS по части зависимостей, но все равно надо лепить горбатого вокруг. Зато хорошая репликация достанется бесплатно.

Или я извращенец и никому это не надо?

Date: 2014-06-21 11:41 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
sqlite возьмите. Или Apache Derby, если жаба. Хотя это скорее для ищущих легких путей.

Date: 2014-06-22 12:04 am (UTC)
From: [identity profile] ircicq.livejournal.com
Проще 1-м индексом вида key_value обойтись.

name: "Vasya", surname: "Pupkin"
превратится в 2 записи в индексе:
name_Vasya
surname_Pupkin

(deleted comment) (Show 2 comments)

Date: 2014-06-22 12:49 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Я на эту тему крепко сейчас думаю; предлагаю держать в простой реляционной базе, а ключи сплющивать.

Date: 2014-06-22 01:04 am (UTC)
From: [identity profile] soonts.livejournal.com
В коропке с любой вендой начиная с 2000 есть ESENT (http://en.wikipedia.org/wiki/Extensible_Storage_Engine) — это такой NoSQL, который придумали и сделали ещё до того, как NoSQL стало круто.
На нём работают например Active Directory, DNS server, Exchange, Windows Search, и ещё куча разного софта и компонент винды.

У записи может быть до 64k колонок, с кучей самых разных индексов по ним.

BTW, я когда-то запилил над ним ORM для .NET (https://esentserialize.codeplex.com/), давно не обновлял конечно, но исходники открыты.

Date: 2014-06-22 03:44 am (UTC)
romikchef: (штора)
From: [personal profile] romikchef
На первый взгляд выглядит, как MongoDB.

Только оно не key-value, а хранит именно что JSON объекты:
db.people.insert({ name: 'Vasya', surname: 'Poupkine'})
- это ванильный синтаксис.
формат "строки" - полностью свободный. Придет объект вида
{ name: 'Vasya', surname: 'Poupkine', birthday: '02/20/1969' }
- сохранится тоже
Соответственно, все поля доступны для запроса, и для поиска индексы специально строить не нужно:
db.people.find( { birthday: '02/20/1969' } );
найдёт всех родившихся в этот день (и у кого есть это свойство в коллекции).
Добавить день рождения существующему Васе - тоже не проблема.

Из коробки же по умолчанию всё держит в памяти - то есть, для производительности индексы тоже не очень-то и нужны, при десятках тысяч-то.
Edited Date: 2014-06-22 04:08 am (UTC)

Date: 2014-06-22 07:09 pm (UTC)

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 15th, 2025 10:02 pm
Powered by Dreamwidth Studios