This will guide you through setting up a replica set in a docker environment using.
- Docker Compose
- MongoDB Replica Sets
- Mongoose
- Mongoose Transactions
Thanks to https://gist.github.com/asoorm for helping with their docker-compose file!
----------------------------------------------------------------------------------------------------- | |
Read Test | |
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting | |
----------------------------------------------------------------------------------------------------- | |
writes a total 2GB files [4 jobs x 512 MB = 2GB] running 4 processes at a time: | |
fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting | |
----------------------------------------------------------------------------------------------------- | |
Read Write Performance Test | |
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75 |
#!/bin/bash | |
if [ "$#" -ne 2 ]; then | |
echo "Usage: $0 <process_name> <cores_list>" | |
echo "Example: $0 swoole_server 0,1,2" | |
exit 1 | |
fi | |
// This was basically ripped straight from http://en.wikipedia.org/wiki/Multiply-with-carry, just javscriptified. | |
var CMWCRand = function(seed) { | |
var i, PHI = 0x9e3779b9; | |
if(!seed) { seed = Date.now(); } | |
var Q = this.Q = new Uint32Array(4096); | |
this.c = 362436; | |
this.i = 4095; | |
Q[0] = seed; |
This will guide you through setting up a replica set in a docker environment using.
Thanks to https://gist.github.com/asoorm for helping with their docker-compose file!
/* | |
this needs replicaSet to work | |
*/ | |
const mongoose = require('mongoose'); | |
async function runTransaction(transactionFunction, ...args) { | |
let session = null; | |
try { | |
session = await mongoose.startSession(); |
const cache = new Map(); | |
/// | |
function memo() { | |
let deleteAfterUse = true; // enable cache deletion after use by default | |
let maxKeys = 32; | |
const memoFunc = function (value=null) { | |
const size = cache.size; | |
if (value) { |
//dont know if this is correct, but leme try, feedback appreciated | |
//blocking: | |
let run = true | |
let count = 0; | |
while(run){ | |
++count; | |
let n = Math.random(); | |
if(n <= 0.01){ | |
run = false; |
PGBouncer is a lightweight connection pooler for PostgreSQL. CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters.
CockroachDB is PostgreSQL wire compatible database, which means it aims to have tight compatibility with the PG ecosystem. Today, we're going to wire PGBouncer to work with CockroachDB. This article is meant to scratch the surface of possibilities unblocked by PGBouncer with CockroachDB and not meant to be an in-depth overview. We're currently researching this topic and will follow up with official docs on proper architecture and sizing of PGBouncer and CockroachDB.
var GEOLOCATION_ALLOW = true; | |
(() => { | |
try { | |
//geolocate: enable - true, disable - false | |
//get this setting from db | |
const geolocate = localStorage.getItem('geolocate'); | |
if (geolocate !== null) { | |
GEOLOCATION_ALLOW = Boolean(geolocate); | |
} |
'use strict'; | |
const { createClient } = require('redis'); | |
const options = { | |
host: '127.0.0.1', | |
port: 6379, | |
db: 0, | |
enable_offline_queue: false, | |
socket_keepalive: true, |