Re[17]: Про NoSQL
От: Mamut Швеция http://dmitriid.com
Дата: 06.12.10 08:13
Оценка:
ANS>>Простая ситуация: всё пропало, бекапы 12-часовой давности. В чем разница между ACID и NoSql?
G>Ни в чем. Другой случай. Одна машина (!)
G>MS SQL c Transaction Log Backup каждые 5 секунд, NoSQL с любыми средствами резервного копирования. Все пропало.
G>MS SQL могу до 5 секунд восстанавливать, с NoSQL что делать будем?

Берем такой NoSQL, который имеет такой же лог

Но вообще-то да. Обычно NoSQL'и теряют как минимум одну из букв в ACID


dmitriid.comGitHubLinkedIn
Re[17]: Вдогонку
От: Mamut Швеция http://dmitriid.com
Дата: 06.12.10 08:15
Оценка:
ANS>>Простая ситуация: всё пропало, бекапы 12-часовой давности. В чем разница между ACID и NoSql?
G>Ни в чем. Другой случай. Одна машина (!)
G>MS SQL c Transaction Log Backup каждые 5 секунд, NoSQL с любыми средствами резервного копирования. Все пропало.
G>MS SQL могу до 5 секунд восстанавливать, с NoSQL что делать будем?

OrientDB иммет ACID
Neo4J позволяет ACID

Всякие ОО-базы тоже позволяют. Тут: http://nosql-database.org/


dmitriid.comGitHubLinkedIn
Re[17]: Про NoSQL
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.12.10 08:18
Оценка: :)
Здравствуйте, gandjustas, Вы писали:

ANS>>Простая ситуация: всё пропало, бекапы 12-часовой давности. В чем разница между ACID и NoSql?

G>Ни в чем. Другой случай. Одна машина (!)
G>MS SQL c Transaction Log Backup каждые 5 секунд, NoSQL с любыми средствами резервного копирования. Все пропало.
G>MS SQL могу до 5 секунд восстанавливать, с NoSQL что делать будем?

Я просто намекну, что Durability даёт _абсолютную_ гарантию. Второе, ты утверждал, что сможешь понять, какие именно транзакции пропали за эти 5 сек. Как?
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[22]: Про NoSQL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 08:22
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>>>Здравствуйте, gandjustas, Вы писали:
G>>>>Ты вообще о чем? Где теряются гарантии, покажешь?
ANS>>>Тут
Автор: gandjustas
Дата: 06.12.10
.

ANS>>>>>ACID, кстати, тоже не выполняется, но программист (в данном случае gandjustas) то думает, что выполняется.
G>>>>Покажи где он не выполнгяется.
ANS>>>ACID гарантирует, что мы можем прочитать, то что записали? В любой момент времени, а не когда-то в необозримом будущем?
G>>Можем. Select по ключу.

ANS>... и съел мой мозг
Автор: Andrei N.Sobchuck
Дата: 06.12.10
. А мог бы сказать, что не нужно читать то, что ты только записал. Ведь оно и так у тебя есть.


Нужно — читай. Тебе никто не мешает. Ты только полнотекстовым поиском не сможешь сразу ничего найти, если сам не приложишь усилия по его построению.
У тебя тут есть выбор.
Re[18]: Про NoSQL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 08:23
Оценка:
Здравствуйте, Mamut, Вы писали:

ANS>>>Простая ситуация: всё пропало, бекапы 12-часовой давности. В чем разница между ACID и NoSql?

G>>Ни в чем. Другой случай. Одна машина (!)
G>>MS SQL c Transaction Log Backup каждые 5 секунд, NoSQL с любыми средствами резервного копирования. Все пропало.
G>>MS SQL могу до 5 секунд восстанавливать, с NoSQL что делать будем?

M>Берем такой NoSQL, который имеет такой же лог

Не имеет такого же лога. Transaction Log — это реализация durability, которой во многих NoSQL хранилищах нету.
Re[18]: Вдогонку
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 08:26
Оценка:
Здравствуйте, Mamut, Вы писали:


ANS>>>Простая ситуация: всё пропало, бекапы 12-часовой давности. В чем разница между ACID и NoSql?

G>>Ни в чем. Другой случай. Одна машина (!)
G>>MS SQL c Transaction Log Backup каждые 5 секунд, NoSQL с любыми средствами резервного копирования. Все пропало.
G>>MS SQL могу до 5 секунд восстанавливать, с NoSQL что делать будем?

M>OrientDB иммет ACID

M>Neo4J позволяет ACID

M>Всякие ОО-базы тоже позволяют. Тут: http://nosql-database.org/


Ну значит их и стоит использовать.

Я бы например не решился поднимать решение на NoSQL без Durability на одной машине. А поднимать сразу кластер — как-то накладно.
50% моих решений я без геморроя разворачиваю на shared хостинге, там уж точно NoSQL кластеров не видать.
Re[18]: Про NoSQL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 08:31
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, gandjustas, Вы писали:


ANS>>>Простая ситуация: всё пропало, бекапы 12-часовой давности. В чем разница между ACID и NoSql?

G>>Ни в чем. Другой случай. Одна машина (!)
G>>MS SQL c Transaction Log Backup каждые 5 секунд, NoSQL с любыми средствами резервного копирования. Все пропало.
G>>MS SQL могу до 5 секунд восстанавливать, с NoSQL что делать будем?

ANS>Я просто намекну, что Durability даёт _абсолютную_ гарантию.

Что ты имеешь ввиду?

ANS>Второе, ты утверждал, что сможешь понять, какие именно транзакции пропали за эти 5 сек. Как?

Где я такого утверждал? Я вообще catastrophic failure не рассматривал, это ты начал.
А вот незавершение дисковых операций при выключении компа, аппаратные ошибки итп. Особенно в ситуации где ты арендуешь железо — очень вероятны.
Re[19]: Про NoSQL
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.12.10 09:01
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Не имеет такого же лога. Transaction Log — это реализация durability, которой во многих NoSQL хранилищах нету.


Transaction Log — это не единственная реализация durability, это оптимизация. Более того, как я показал
Автор: Andrei N.Sobchuck
Дата: 06.12.10
, durability оно не обеспечивает.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[20]: Про NoSQL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 09:03
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, gandjustas, Вы писали:


G>>Не имеет такого же лога. Transaction Log — это реализация durability, которой во многих NoSQL хранилищах нету.


ANS>Transaction Log — это не единственная реализация durability, это оптимизация.

Не понимаю что ты хочешь сказать. Чуть менее чем во всех современных СУБД durability обеспечивается логом транзакций.

ANS>Более того, как я показал
Автор: Andrei N.Sobchuck
Дата: 06.12.10
, durability оно не обеспечивает.

Ты там ничего не показал.
Re[21]: Про NoSQL
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.12.10 10:02
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Не имеет такого же лога. Transaction Log — это реализация durability, которой во многих NoSQL хранилищах нету.


ANS>>Transaction Log — это не единственная реализация durability, это оптимизация.

G>Не понимаю что ты хочешь сказать. Чуть менее чем во всех современных СУБД durability обеспечивается логом транзакций.

Durability обеспечивается не логом транзакций, а записью на винт до возвращения ответа пользователю. Лог транзакций позволяет превратить множество записей рандомных блоков в малое колличество последовательных. А все остальные блоки можно записать позже асинхронно. Т.е. синхронно пишет быстро, а потом асиннхронно медленно. Можно выкинуть лог. ACID же о скорости ничего не говорит. Просто будет не совсем практично. А. Если у тебя БД организована так что есть один только как бы "лог", то отдельный лог можно и не вести.

ANS>>Более того, как я показал
Автор: Andrei N.Sobchuck
Дата: 06.12.10
, durability оно не обеспечивает.

G>Ты там ничего не показал.

Либо у тебя один винт и нету никакой D. Либо не один и тогда, скорее всего, нету CAP-Availability. ACID конечно ничего о доступности не говорит, но это же не совсем практично. Или практика философов не интересует?
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[19]: Вдогонку
От: Mamut Швеция http://dmitriid.com
Дата: 06.12.10 10:02
Оценка:
M>>OrientDB иммет ACID
M>>Neo4J позволяет ACID

M>>Всякие ОО-базы тоже позволяют. Тут: http://nosql-database.org/


G>Ну значит их и стоит использовать.


G>Я бы например не решился поднимать решение на NoSQL без Durability на одной машине. А поднимать сразу кластер — как-то накладно.


Это камень в огород MongoDB Они вообще гарантируют отсутствие Durability на одной машине

G>50% моих решений я без геморроя разворачиваю на shared хостинге, там уж точно NoSQL кластеров не видать.


Это точно.


dmitriid.comGitHubLinkedIn
Re[15]: Про NoSQL
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 06.12.10 10:12
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Вот скажи честно, сколько занимает в твоем решении чтение данных в память? Как часто приходится перечитывать?

M>>Сколько раз говорить о том, что нет чтения данных в пямять. Индексация занимает 15 минут.
G>И как часто она выполняется?

Раз в сутки. К принципе можно запускать каждый час, только это никому не надо и нисколько не критично

G>Теперь открою еще одну тайну. Работа субд аналогична тому что ты будешь делать переиндексацию на каждое изменение.

G>Поэтому SQL уже порвал твой код в разы.

Да он порвал мой код в разы, но на другой задаче Ибо требование делать переиндексацию на каждое изменение не критично нисколько. А вот решить именно нашу задачу с использованием SQL никто у нас не смог. Что говорит о том, что писать NoSQL проще. По крайней мере для некоторых.
Re[22]: Про NoSQL
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.12.10 10:18
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Durability обеспечивается не логом транзакций, а записью на винт до возвращения ответа пользователю. Лог транзакций позволяет превратить множество записей рандомных блоков в малое колличество последовательных. А все остальные блоки можно записать позже асинхронно. Т.е. синхронно пишет быстро, а потом асиннхронно медленно. Можно выкинуть лог. ACID же о скорости ничего не говорит. Просто будет не совсем практично. А. Если у тебя БД организована так что есть один только как бы "лог", то отдельный лог можно и не вести.


Кстати. redis:

* Fsync() every time a new command is appended to the append log file. Very very slow, very safe.
* Fsync() one time every second. Fast enough, and you can lose 1 second of data if there is a disaster.
* Never fsync(), just put your data in the hands of the Operating System. The faster and unsafer method.

Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[22]: Про NoSQL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 10:37
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, gandjustas, Вы писали:


G>>>>Не имеет такого же лога. Transaction Log — это реализация durability, которой во многих NoSQL хранилищах нету.


ANS>>>Transaction Log — это не единственная реализация durability, это оптимизация.

G>>Не понимаю что ты хочешь сказать. Чуть менее чем во всех современных СУБД durability обеспечивается логом транзакций.

ANS>Durability обеспечивается не логом транзакций, а записью на винт до возвращения ответа пользователю. Лог транзакций позволяет превратить множество записей рандомных блоков в малое колличество последовательных. А все остальные блоки можно записать позже асинхронно. Т.е. синхронно пишет быстро, а потом асиннхронно медленно. Можно выкинуть лог. ACID же о скорости ничего не говорит. Просто будет не совсем практично. А. Если у тебя БД организована так что есть один только как бы "лог", то отдельный лог можно и не вести.

Бред. Как ты откатывать транзакцию будешь без лога?

ANS>>>Более того, как я показал
Автор: Andrei N.Sobchuck
Дата: 06.12.10
, durability оно не обеспечивает.

G>>Ты там ничего не показал.

ANS>Либо у тебя один винт и нету никакой D.

Ты неверно понимаешь слово Durability.

ANS>Либо не один и тогда, скорее всего, нету CAP-Availability. ACID конечно ничего о доступности не говорит, но это же не совсем практично.

ACID вообще не коррелирует с CAP.

ANS>Или практика философов не интересует?

Практика это зачастую одна машина с БД, а CAP и мега-распределенные системы это теория.
Re[16]: Про NoSQL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.12.10 10:51
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, gandjustas, Вы писали:


G>>>>Вот скажи честно, сколько занимает в твоем решении чтение данных в память? Как часто приходится перечитывать?

M>>>Сколько раз говорить о том, что нет чтения данных в пямять. Индексация занимает 15 минут.
G>>И как часто она выполняется?

M>Раз в сутки. К принципе можно запускать каждый час, только это никому не надо и нисколько не критично


G>>Теперь открою еще одну тайну. Работа субд аналогична тому что ты будешь делать переиндексацию на каждое изменение.

G>>Поэтому SQL уже порвал твой код в разы.

M>Да он порвал мой код в разы, но на другой задаче Ибо требование делать переиндексацию на каждое изменение не критично нисколько. А вот решить именно нашу задачу с использованием SQL никто у нас не смог. Что говорит о том, что писать NoSQL проще. По крайней мере для некоторых.

А причем тут NoSQL? Ты просто свел задачу к той, которую БД не умеет решать, и написал решение сам.
Кстати полнотекстовый поиск не пробовал использовать?
Re[20]: Вдогонку
От: Anton Batenev Россия https://github.com/abbat
Дата: 06.12.10 11:30
Оценка: 15 (1)
Здравствуйте, Mamut, Вы писали:

M> Это камень в огород MongoDB Они вообще гарантируют отсутствие Durability на одной машине


The v1.8 release of MongoDB will have single server durability.


Ну и периодический fsync, который по умолчанию каждые 60 секунд, тоже помогает.
avalon 1.0rc3 rev 372, zlib 1.2.3
Re[21]: Вдогонку
От: Mamut Швеция http://dmitriid.com
Дата: 06.12.10 11:35
Оценка:
M>> Это камень в огород MongoDB Они вообще гарантируют отсутствие Durability на одной машине

AB>

The v1.8 release of MongoDB will have single server durability.


AB>Ну и периодический fsync, который по умолчанию каждые 60 секунд, тоже помогает.


В общем, NoSQL постепенно приходит к durability Особенно в наиболее известных/распространенных проектах


dmitriid.comGitHubLinkedIn
Re[23]: Про NoSQL
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.12.10 11:44
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

ANS>>Durability обеспечивается не логом транзакций, а записью на винт до возвращения ответа пользователю. Лог транзакций позволяет превратить множество записей рандомных блоков в малое колличество последовательных. А все остальные блоки можно записать позже асинхронно. Т.е. синхронно пишет быстро, а потом асиннхронно медленно. Можно выкинуть лог. ACID же о скорости ничего не говорит. Просто будет не совсем практично. А. Если у тебя БД организована так что есть один только как бы "лог", то отдельный лог можно и не вести.

G>Бред. Как ты откатывать транзакцию будешь без лога?

http://archives.postgresql.org/pgsql-hackers/2007-10/msg01028.php
Ты путаешь "UNDO log" и лог транзакций.

G>Ты неверно понимаешь слово Durability.


Это сто процентов. Я собственно сразу заявил, что именно то Durability, которое в ACID никому не нужно. Пользователь утрётся и введёт данные заново. За 5 сек, 5 мин, 5 дней. А нужно нам что попроще. Просто чтобы спать спокойно, ибо программист и так никакой ответственности ни за что не несёт. А если кому нужно нормальное "Durability" и он попытается его обеспечить, то скажем что просто никто в RDBMS ничего не понимает. И продолжим спать спокойно.

ANS>>Либо не один и тогда, скорее всего, нету CAP-Availability. ACID конечно ничего о доступности не говорит, но это же не совсем практично.

G>ACID вообще не коррелирует с CAP.

D в ACID == C в CAP. Но не в этом дело. Дело в том, что с практической точки зрения люди всё равно заботятся о доступности.

ANS>>Или практика философов не интересует?

G>Практика это зачастую одна машина с БД, а CAP и мега-распределенные системы это теория.

Угу угу
Автор: Andrei N.Sobchuck
Дата: 04.12.10
. А потом ставят какой-нибудь memcached и работают с ним так: http://www.majordojo.com/2007/03/memcached-howto.php . То что всё иногда ломается — так сделаем круглые глаза, у нас же ACID и всё гарантировано. Почему ты запрещаешь сделать инструмент, который убережёт от таких ошибок?
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[22]: Вдогонку
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.12.10 11:51
Оценка:
Здравствуйте, Mamut, Вы писали:

M>В общем, NoSQL постепенно приходит к durability Особенно в наиболее известных/распространенных проектах


Это и понятно. Зародилось оно в условиях когда есть кластер. А там, имхо, синхронная репликация и быстрее и гораздо надёжнее, чем какие-то там винты. А людям хочется эти сервера локально поднимать. Хотя, мне кажется, что будущее тут это БД-как-сервис.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[10]: Про NoSQL
От: Wolverrum Ниоткуда  
Дата: 06.12.10 11:52
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Как минимум еще надо все это поддерживать. Во-вторых, в самом тяжелом случае, когда надо вернуть миллион/полтора записей, одни только вычисления агрегатных функций, написанные на чистом C, занимают 50% времени. Т. е. если предположить, что поиск данных занимает нуль секунд, а производительность вычислений агрегатных функций совпадает с чистым C, то мы ускоримся в два раза.


Ну... А зачем кубы придумали? На худой конец — триггеры.

M>И в третьих, как тогда писать SQL-запросы: Если у нас items имеет вид item_id, tag1, tag2, tag3, ..., tag100

M>то как выбрать все записи, у которых есть в tag встречается и 10 и 25? Писать
M>
M>WHERE (tag1=10 OR tag2=10 or tag3=10 OR ... ) AND (tag1=25 OR tag2=25 or tag3=25 OR ... )
M>

Я же обратил внимание на этот момент:
FROM ...item_tags2 S where S.tag IN (10, 25) ...


M>грустно

Да, грустно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.