0xd34df00d 06.02.2012 10:57 Azoth

Объебался кофе и понял, каким должно быть Хранилище в LC. Не нужны никакие Mongo и прочее, все вполне наворачивается поверх обычного скуэля. По дефолту будет постгрес, поэтому, кажется, вендоблядки соснут и останутся без хранилища для почты и прочих ништяков.

Recommended by:

@pooq: моча съела говно

and @DZhon
1. rman 06.02.2012 10:57 Gajim

а аперативки не будет мало?

2. magog 06.02.2012 10:57 Azoth@Work

в личкрафтах до сих пор нету глобального интерфейса для работы с базами?:

3. 0xd34df00dmagog /2 06.02.2012 10:58 Azoth

Тут не в интерфейсе для БД дело, а в ебанутом сторедже, чтобы все хранилось и няшно.

4. k0st1x 06.02.2012 10:58 Work

а разве sqlite не является стандартом де факто для desktop приложений? а то как то накладно поднимать sql сервер из-за десктопного приложения

5. 0xd34df00drman /1 06.02.2012 10:58 Azoth

Нет, почему7

6. 0xd34df00dk0st1x /4 06.02.2012 10:59 Azoth

sqlite тормознутое говно, которое едва ли может в concurrent access.

7. rman0xd34df00d /5 06.02.2012 10:59 Gajim

потому что у меня только гигабайт

8. 0xd34df00drman /7 06.02.2012 10:59 Azoth

640к хватит всем^U Ну, не вижу особых проблем, если честно.

9. magog0xd34df00d /3 06.02.2012 11:00 Azoth@Work

я имею в виду — не стоит ли написать какую-то унифицированную хуиту, которая будет работать с базой, а все личкрафты с этой хуитой (это в коде) и так, что бы добавить туда работу с нужной базой не состоявляло особо труда. ОТогда вендобляди не соснут

10. rman0xd34df00d /8 06.02.2012 11:00 Gajim

охуел, оно жрет 600 мегабайт?

11. 0xd34df00dmagog /9 06.02.2012 11:00 Azoth

sqlite накладывает существенные ограничения по фичам, а я хочу использовать всю мощь постгреса.

12. 0xd34df00drman /10 06.02.2012 11:01 Azoth

Кто — оно?

13. k0st1x0xd34df00d /6 06.02.2012 11:02 Work

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

14. 0xd34df00dk0st1x /13 06.02.2012 11:02 Azoth_primary

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

15. rman0xd34df00d /12 06.02.2012 11:03 Gajim

LC

16. 0xd34df00drman /15 06.02.2012 11:04 Azoth_primary

Нет, у меня на ноуте после старта 150-180 в полном комплекте и со всякими фильтрами-скриптами. У людей и в пару раз меньше жрет.

17. k0st1x0xd34df00d /11 06.02.2012 11:04 Work

а ты, как норм кодер, заюзай ORM, тогда не будешь ограничен лишь одним движком базы

18. 0xd34df00dk0st1x /17 06.02.2012 11:05 Azoth_primary

Расскажи мне про ORM в плюсах, дада.

19. rman0xd34df00d /16 06.02.2012 11:05 Gajim

тогда ок

20. magogk0st1x /17 06.02.2012 11:05 Azoth@Work

во. Я про это и говорю. Надо написать свою же

21. k0st1x0xd34df00d /18 06.02.2012 11:05 Work

как же вам тяжко живется. а как же делается прослойка между кодом и БД в плюсцах?

22. 0xd34df00dmagog /20 06.02.2012 11:05 Azoth_primary

ORM тут, кстати, вообще ни при чем. На этапе, который мне нужен, уже нет никаких объектов, есть структуры данных с ромбовидной иерархией.

23. 0xd34df00dk0st1x /21 06.02.2012 11:05 Azoth_primary

Руками.

24. magog0xd34df00d /23 06.02.2012 11:06 Azoth@Work

короче напиши хуиту, которая позволит даже мне добавить туда мускул, что бы никто не соснул

25. k0st1x0xd34df00d /23 06.02.2012 11:06 Work

страннота там у вас. надо поглядеть, что там гугел говорит...

26. Elena 06.02.2012 11:08 Kopete

напишите срази утилите a la akonadi-tray чтобы настраивать, контролить, выключить и пр

27. k0st1x0xd34df00d /23 06.02.2012 11:08 Work

да ты гонишь. даже в qt есть орм — "QxOrm"

28. 0xd34df00dk0st1x /27 06.02.2012 11:08 Azoth_primary

Когда я последний раз это ковырял, оно нихуя не умело.
И это не в куте, а сторонний солюшен же.

29. kb 06.02.2012 11:09

опиши

30. kbkb /29 06.02.2012 11:09

анус себе опиши, пёс

31. 0xd34df00dk0st1x /25 06.02.2012 11:09 Azoth_primary

Есть еще qdjango, вроде многообещающе, но опять Qt-only, и какие-то проблемы с миграцией и прочей хуитой были.

32. 0xd34df00dkb /30 06.02.2012 11:09 Azoth_primary

Какой автоответ.

33. 0xd34df00dmagog /24 06.02.2012 11:09 Azoth_primary

Зачем?

34. k0st1x0xd34df00d /28 06.02.2012 11:09 Work

а что она тогда делает на офф сайте http://qt.nokia.com?

35. kb0xd34df00d /32 06.02.2012 11:09

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

36. 0xd34df00dk0st1x /34 06.02.2012 11:09 Azoth_primary

На сайте ноклы перечислены сторонние солюшены. В официальную поставку кутей они не входят.

37. magog0xd34df00d /33 06.02.2012 11:11 Azoth@Work

для того, что бы никто не соснул и все были довольны. А мы поищем человека, который для этого заведет мускул. Не стоит так на раз отрубать венду

38. k0st1x0xd34df00d /36 06.02.2012 11:11 Work

это же не страшно. главное — что она qt based

39. 0xd34df00dmagog /37 06.02.2012 11:11 Azoth_primary

Чем мускл для венды лучше постгреса?

40. k0st1x0xd34df00d /36 06.02.2012 11:11 Work

а может просто хватит QtSql? или там руками sql подсовывать надо?

41. magog0xd34df00d /39 06.02.2012 11:11 Azoth@Work

тем, что она там заводится без бубна

42. magogk0st1x /40 06.02.2012 11:11 Azoth@Work

да

43. 0xd34df00dk0st1x /40 06.02.2012 11:12 Azoth_primary

Именно. QtSql — это тупо абстракция над нативными дровами для доступа к соответствующим БД. Выглядит как QSqlQuery query ("SELECT shit FROM crap;"); query.exec ();

44. k0st1xmagog /42 06.02.2012 11:12 Work

это прескорбно.

45. 0xd34df00dmagog /42 06.02.2012 11:12 Azoth_primary

> или
> да

46. magogmagog /41 06.02.2012 11:13 Azoth@Work

спроси мантикора — он срал кирпичами из-за постргреса в венде

47. magog0xd34df00d /45 06.02.2012 11:13 Azoth@Work

сарказмируешь, сука?!

48. 0xd34df00dkb /29 06.02.2012 11:17 Azoth_primary

Все состоит из айтемов. У айтемов может быть список дочерних айтемов и список родительских айтемов — получается такой ациклический направленный граф, для случая, когда у всех айтемов только один родитель, переходящий в дерево. Сначала описываешь структуру айтемов и говоришь, какое поле является ID, а какие будут легкими, и по ним ты хочешь уметь делать быстрые селекты, а какие — тяжелые, и их лучше хранить вне БД. Имеются методы для выбора всех айтемов данного типа, всех детей у данного айтема, и так далее.

В рамках этой модели, например, почта выглядит следующим образом. Фолдер — это айтем (который может быть сабфолдером, кстати). Письмо — это айтем, имеющий один или несколько родительских фолдеров. Индексируем по отправителю/теме/етц (по факту, храним эти поля в базе). Тело письма и аттачменты хранятся в виде файлов в ФС, в БД только пути к ним.

Есть utility-классы для представления всей этой хуйни в виде древовидной модели и все такое.

Это все нулевое приближение. Щас схожу прошвырнусь по улице, подумаю, как туда вписываются всякие календарики-хуе-мое, а также что я пока не учел.

49. k0st1xk0st1x /27 06.02.2012 11:17 Work

http://en.wikipedia.org/wiki/List_of_obj...
QxOrm умеет больше всех.
он умеет: mysql, postgresql, sqlite, odbc

50. 0xd34df00dk0st1x /49 06.02.2012 11:17 Azoth_primary

Там вопрос не в том, какие бекенды оно умеет, а в фичах типа версионирования, миграции, етц.

51. magog0xd34df00d /48 06.02.2012 11:18 Azoth@Work

прочитал utility-классы как unity-классы. Чуть не обосрался

52. rmanmagog /51 06.02.2012 11:18 Gajim

жаль

53. magog0xd34df00d /50 06.02.2012 11:19 Azoth@Work

там буст и кути. Прямо сам бог велел засунуть это в личкарфты

54. 0xd34df00dmagog /53 06.02.2012 11:19 Azoth_primary

Вообще охуеть.

55. k0st1x0xd34df00d /50 06.02.2012 11:21 Work

обычно этим orm не занимается. самое лучшее поведение для orm — падать при старте, если что то не срастается.

56. kb0xd34df00d /48 06.02.2012 11:22

мне кажется очень велосипедным. почему не просто activerecord и описание фолдера, мессаджа и т.п., и ручного указания "здесь индекс b-tree пожалуйста", "здесь has-индекс, пожалуйста". просто твоя абстракция напоминает мне Lucene и всю его xml-поебень — для полнотекстового поиска в вакууме неплохо, но когда ты точно знаешь, какие тебе индексы нужны и какие ты будешь делать запросы и какие у тебя модели — сложно описывать схему, сложно строить модели и т.п.

57. kbkb /56 06.02.2012 11:23

s/has/hash/

58. 0xd34df00dkb /56 06.02.2012 11:23 Azoth_primary

Потому что ручное указание не нужно. Про activerecord не понял, разверни.
Про люсьен телл ми моар, у меня в проекте по работе с ним все работает.

59. kb0xd34df00d /58 06.02.2012 11:31

ну, ты делаешь обычный ООП, и объект маппится в запись в базе, такой паттерн. и отдельно умеешь маппинг его схемы в БД (а маппинг связывается с движком, который уже на конкретно постгрес). а иначе у тебя начнется "stringly-typed development", когда все схемы универсальны, никакой типизации и подобного.

ручное указание нужно, потому что как понять, какой тип индекса нужен и на какие поля? начнется описание схем и прочий люсьен.

насчет люсьена — я с ним конкретно не работал, а работал со всякими solr, а также riak и его копией схемы solr. так вот оно рассчитано как раз на минимальную привязку к структуре документа (судя по всему, ты тоже пытаешься), а потому всё, что нужно индексировать описывается xml-документом. так вот они пытаются сделать такой "универсвльный документ" под всё, а в результате получилось говно без compound-индексов, к примеру (это в riak, что там в solr не помню), ну и непонятно как оно индексирует по датам и прочему, в общем.

суть этого поста в том, что нужно оставаться ближе к схеме, т.к. на индексах нужно экономить и за ними следить (иначе память всю сожрут, или не будет multi-field index'ов, или еще что).

ах да. а деревья меня твои пугают немного :) нужны они ведь не везде, а придется теперь.

60. 0xd34df00dkb /59 06.02.2012 11:34 Azoth_primary

У меня еще есть и семантические роли столбцов и все такое. Хочу, чтобы движок автоматически мог связать колонку From в таблице почты и колонку Address в таблице адресной книги.

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

Че. У нас вообще нет никакой структуры документа, мы индексируем плейнтекст. Кстати, индексер я тоже хочу в эту хуйню добавить, чтобы делать полнотекстовый поиск и все такое, но пока не придумал, чокак.

Они нужны как минимум в почте. А там, где не нужны — так пусть будет root item и у него все дети, или типа того.

Олсо, спасибо за начало конструктивного обсуждения всем в этом треде :3

61. kb0xd34df00d /60 06.02.2012 12:02

тело письма хранить в бд как раз самый ок, тип поля называется textfield. а для ограниченых размером полей есть varchar(<length>). оно само будет выносить textfield'ы в хранилище умное. короче твоё дело лишь на уровне ОРМ указать.

62. kb0xd34df00d /60 06.02.2012 12:03

короче не городи огород, делай а ля джанго-модели/формы. там же ты и прикрутишь, по сути, биндинг специальный к таблице адресной книги, в описнании модели.

63. kb0xd34df00d /60 06.02.2012 12:06

по поводу люсьена — я имел в виду solr и его описание схемы, а не сам процесс хранения индекса и проч. короче там жуткий xml и пиздец.

64. kb0xd34df00d /60 06.02.2012 12:15

а, по поводу пиздеца схем в солре — основной там в поисках по вайлдкардах, если не ошибаюсь. как-то очень сложно указать точность запросов твоих, он сам должен телепатически всё заиндексировать.

поэтому солр и жрёт столько тонн памяти, надо понимать.

65. 0xd34df00dkb /62 06.02.2012 12:20 Azoth_primary

Я не ебу, чо там в джанге.

66. kb0xd34df00d /65 06.02.2012 12:21

ну и зря, хуле. ну может где-то в плюсах что-то подобное и есть.

Do you really want to delete ?