BufWriter<Master<'_>> – Telegram
BufWriter<Master<'_>>
105 subscribers
451 photos
28 videos
34 files
1.7K links
https://www.patreon.com/alxe_master

Видео/статьи. Конспект и мои вольные комментарии по инженерии. тут только то, что считаю полезным для себя или других =)

#os, #cloud, #rust, #golang, #python, #javaScript, #cpp, etc
Download Telegram
== MemTable
https://github.com/facebook/rocksdb/wiki/MemTable

In-memory data structure that holds data before it’s flushed into an SStable, the implementation may use a RB Tree, a skiplist, a HashLinkList
== SSTable and Log Structured Storage: LevelDB
https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/

SSTable
An immutable data structure that stores a large number of key:value pairs sorted by key
Advantages over simple hash indexes
- Merging SSTables is similar to doing a merge sort
- To find if a key exists we don’t need an index of all the keys in memory, instead we can keep an index for every few kilobytes and then perform a scan (sparse index)
- range queries can be compressed before writing to disk, the sparse index would only need to find the starting position of the compressed segment
== Casanrda. How is data maintained?
https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlHowDataMaintain.html
- SizeTieredCompactionStrategy (STCS) = for writing-intensive
- LeveledCompactionStrategy (LCS) = for reading-intensive
- TimeWindowCompactionStrategy (TWCS)
- DateTieredCompactionStrategy (DTCS)

== Scylla. Choose a Compaction Strategy
https://docs.scylladb.com/stable/architecture/compaction/compaction-strategies.html
== Что такое ZFS?
https://docs.oracle.com/cd/E19253-01/820-0836/zfsover-2/index.html

- Это 128-разрядная файловая система с возможностью хранения данных в объеме 256 септильонов зеттабайт


- Не имеет журнала. транзакционна = легко САМОвосстанавливается
- Данные если хранятся то не противоречивы за счет измений по алгоритму CoW
- важные данные можно писать СИНХРОННО. всегда гарантированно сохраняются перед возвратом и поэтому не могут быть утрачены = без буфера = надежно
- поддерживает пулы устройств хранения данных с различными уровнями избыточности данных
- снимки есть из коробки
Forwarded from Блог Сергея Баранова (Sergey Baranov)
Небольшое дополнение по одной из обсуждённых тем, «layer communication protocols»:

Важно обратить внимание, что использование layer communication protocols ведет к деградации производительности, но при этом дает и существенные выгоды:

- Модульная структура открывает возможности для самых различных комбинаций, например возможность добавлять и убирать слои в зависимости от требований. You only pay for what you use.
- При аккуратной декомпозиции вышестоящие протоколы могут быть реализованы и протестированы значительно быстрее, чем крупный, монолитный протокол
- Протоколы могут быть взаимозаменяемыми (например, выбор протокола под профиль нагрузки)
- Верифицировать корректность работы небольшого протокола проще

Среди минусов:

- Вычислительный оверхед
- Оверхед в передаваемых данных, в основном в заголовках между уровнями
- Зависимость слоев друг от друга

Из-за того, что в типовой системе сообщению требуется пройти 10 и более слоев, оверхед от пересечения границ протоколов может оказаться даже выше, чем затраты на выполнение полезной нагрузки.

Работы по оптимизации не прекращаются, среди направлений:

- Оптимизация вычислительной нагрузки
- Сжатие заголовков
- Отложенная обработка (например отложенная буферизация сообщения)

По мотивам: https://www.cs.cornell.edu/projects/spinglass/public_pdfs/Optimizing%20Layered.pdf
🖥 Задачи из интервью Google Data Science вопрос 3

Вы находитесь в казино и у вас две кости для игры. Каждый ваш бросок стоит 5 долларов, и вы выигрываете 10 долларов каждый раз, когда выпадает 5. Если вы играете до тех пор, пока не выиграете, а затем остановитесь, то какова ожидаемая выплата?

Ответ
Есть 36 возможных комбинаций с двумя кубиками.
Из 36 комбинаций есть 4 комбинации, в результате которых получается пять (см. рисунок). Это означает, что есть шанс 4/36 или 1/9 бросить 5.
Вероятность выигрыша 1/9 означает, что вы проиграете восемь раз и выиграете один раз (теоретически).
Следовательно, ваша ожидаемая выплата = потеря равна $ 10,00 * 1 – $ 5,00 * 9 = – $ 35,00.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from GitHub Community
Dragonflycервис/in-memory база данных, которая будет очень крутой заменой для Redis

По факту это многопоточная, быстрая замена редис

Ссылка на проект

GitHub | #Interesting #C #Useful