http:///https:///api.php?action=feedcontributions&user=Slowfranklin&feedformat=atomSambaWiki - User contributions [en]2024-03-19T07:25:02ZUser contributionsMediaWiki 1.39.5https://wiki.samba.org/index.php?title=Setting_up_Samba_as_a_Domain_Member&diff=19194Setting up Samba as a Domain Member2024-03-05T14:59:47Z<p>Slowfranklin: /* Choosing an idmap backend */</p>
<hr />
<div>= Introduction =<br />
<br />
A Samba domain member is a Linux machine joined to a domain that is running Samba and does not provide domain services, such as an NT4 primary domain controller (PDC) or Active Directory (AD) domain controller (DC).<br />
<br />
On a Samba domain member, you can:<br />
<br />
* Use domain users and groups in local ACLs on files and directories.<br />
* Set up shares to act as a file server.<br />
* Set up printing services to act as a print server.<br />
* Configure PAM to enable domain users to log on locally or to authenticate to local installed services.<br />
<br />
For details about setting up a Samba NT4 domain or Samba AD, see [[Domain_Control|Domain Control]].<br />
<br />
<br />
{{Imbox<br />
| type = important<br />
| text = For versions of Samba earlier than 4.15.0, never use <code>samba-tool domain provision</code> to create a Unix domain member, it will not work, you must follow the procedure laid out on this page.<br />
}}<br />
<br />
{{Imbox<br />
| type = important<br />
| text = All AD Domain members must be in the same <code>DNS</code> domain and the Realm must be the <code>DNS</code> domain in uppercase. For example, the <code>DNS</code> domain could be <code>samdom.example.com</code> and the Realm would be <code>SAMDOM.EXAMPLE.COM</code>.<br />
}}<br />
<br />
<br />
<br />
= Preparing the Installation =<br />
<br />
== General Preparation ==<br />
<br />
* Verify that no Samba processes are running:<br />
# ps ax | egrep "samba|smbd|nmbd|winbindd"<br />
: If the output lists any <code>samba</code>, <code>smbd</code>, <code>nmbd</code>, or <code>winbindd</code> processes, shut down the processes.<br />
<br />
* If you previously run a Samba installation on this host:<br />
:* Backup the existing <code>smb.conf</code> file. To list the path to the file, enter:<br />
<br />
# smbd -b | grep "CONFIGFILE"<br />
CONFIGFILE: /usr/local/samba/etc/samba/smb.conf<br />
<br />
:* Remove all Samba database files, such as <code>*.tdb</code> and <code>*.ldb</code> files. To list the folders containing Samba databases:<br />
<br />
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"<br />
LOCKDIR: /usr/local/samba/var/lock/<br />
STATEDIR: /usr/local/samba/var/locks/<br />
CACHEDIR: /usr/local/samba/var/cache/<br />
PRIVATE_DIR: /usr/local/samba/private/<br />
<br />
: Starting with a clean environment helps you to prevent confusion, and no files from your previous Samba installation are mixed with your new domain member installation.<br />
<br />
<br />
<br />
== Preparing a Domain Member to Join an Active Directory Domain ==<br />
<br />
=== Configuring DNS ===<br />
<br />
{{:Linux and Unix DNS Configuration}}<br />
<br />
<br />
<br />
<br />
<br />
=== Configuring Kerberos ===<br />
<br />
Samba supports Heimdal and MIT Kerberos back ends. To configure Kerberos on the domain member, set the following in your <code>/etc/krb5.conf</code> file:<br />
<br />
[libdefaults]<br />
default_realm = SAMDOM.EXAMPLE.COM<br />
dns_lookup_realm = false<br />
dns_lookup_kdc = true<br />
<br />
The previous example configures Kerberos for the <code>SAMDOM.EXAMPLE.COM</code> realm.<br />
<br />
The Samba teams recommends to not set any further parameters in the <code>/etc/krb5.conf</code> file.<br />
<br />
If your <code>/etc/krb5.conf</code> contains an <code>include</code> line it will not work, you '''Must''' remove this line.<br />
<br />
On some Linux distributions that use MIT Kerberos, it is necessary to add these lines for proper ID mapping:<br />
<br />
[plugins]<br />
localauth = {<br />
module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so<br />
enable_only = winbind<br />
}<br />
<br />
These settings could also be necessary <code>/etc/security/pam_winbind.conf</code>:<br />
<br />
[global]<br />
krb5_auth = yes<br />
krb5_ccache_type = FILE<br />
<br />
With distributions with crypto-policies, this command must be issued to update the system policy support for Active Directory:<br />
<br />
<code>update-crypto-policies --set DEFAULT:AD-SUPPORT</code><br />
<br />
<br />
<br />
<br />
<br />
=== Configuring Time Synchronisation ===<br />
<br />
Kerberos requires a synchronised time on all domain members. Thus it is recommended to set up an NTP client. For further details, see [[Time_Synchronisation#Configuring_Time_Synchronisation_on_a_Unix_Domain_Member|Configuring Time Synchronisation on a Unix Domain Member]].<br />
<br />
<br />
<br />
<br />
<br />
=== Local Host Name Resolution ===<br />
<br />
When you join the host to the domain, Samba tries to register the host name in the AD DNS zone. For this, the <code>net</code> utility must be able to resolve the host name using DNS or using a correct entry in the <code>/etc/hosts</code> file.<br />
<br />
To verify that your host name resolves correctly, use the <code>getent hosts</code> command. For example:<br />
<br />
# getent hosts M1<br />
10.99.0.5 M1.samdom.example.com M1<br />
<br />
The host name and FQDN must not resolve to the <code>127.0.0.1</code> IP address or any other IP address other than the one used on the LAN interface of the domain member.<br />
<br />
If no output is displayed or the host is resolved to the wrong IP address and you are not using dhcp, set the correct entry in the <code>/etc/hosts</code> file. For example:<br />
<br />
127.0.0.1 localhost<br />
10.99.0.5 M1.samdom.example.com M1<br />
<br />
If you are using dhcp, check that <code>/etc/hosts</code> only contains the '127.0.0.1' line shown above. If you continue to have problems, contact the sysadmin who controls your DHCP server.<br />
<br />
if you need to add aliases to the machine hostname, add them to the end of the line that starts with the machines ipaddress, not the 127.0.0.1 line.<br />
<br />
<br />
<br />
<br />
== Preparing a Domain Member to Join an NT4 Domain ==<br />
<br />
For joining a host to an NT4 domain, no preparation is required.<br />
<br />
<br />
<br />
<br />
<br />
= Installing Samba =<br />
<br />
For details, see [[Installing_Samba|Installing Samba]].<br />
<br />
{{Imbox<br />
| type = note<br />
| text = Install a maintained Samba version. For details, see [[Samba_Release_Planning|Samba Release Planning]].<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Configuring Samba =<br />
<br />
<br />
<br />
Samba can use various winbind idmap backends, The three main ones are:<br />
* ad<br />
* autorid<br />
* rid<br />
<br />
<br />
=== Choosing an idmap backend ===<br />
<br />
It can appear to be a complex decision choosing which winbind idmap backend to use, hopefully reading this can point you to the one to use.<br />
<br />
<br />
{{Imbox<br />
| text = If you require users and groups to have the same IDs everywhere, or have different login shells and Unix home directory paths, then you need to use the winbind idmap 'ad' backend and add RFC2307 attributes to AD.<br />
}}<br />
<br />
If you use the 'ad' backend, the RFC2307 attributes (uidNumber, gidNumber, etc) are not added automatically when users or groups are created, you must add them manually.<br />
<br />
The ID numbers found on a Samba DC (numbers in the 3000000 range) are NOT rfc2307 attributes They cannot and will not be used on Unix Domain Members, you can add uidNumber & gidNumber attributes to AD and use the winbind 'ad' backend on Unix Domain Members. If you do decide to add uidNumber & gidNumber attributes to AD, you do not need to use numbers in the 3000000 range and it would definitely be a good idea to use a different range.<br />
<br />
{{Imbox<br />
| text = If you only need users and groups to have Unix IDs, you can use the 'rid' or 'autorid' idmap winbind backend.<br />
}}<br />
<br />
The 'rid' or 'autorid' idmap winbind backends calculate the user and group IDs from the Windows RID. If you use the 'rid' idmap backend and the same [global] section of the smb.conf on every Unix domain member, you will get the same IDs. Using these idmap backends, you do not add anything to AD and any added RFC2307 attributes will be ignored. When using these backends you can set the 'template shell' and 'template homedir' parameters in the smb.conf global section and everyone will get the login shell and Unix home directory path you set. If you do not set 'template shell' or 'template homedir', the defaults, '/bin/false' and '/home/%D/%U' , will be used.<br />
<br />
<br />
Once you Have decided which winbind idmap backend to use, you have to choose the ranges to use with 'idmap config' in smb.conf.<br />
<br />
By default on a Unix domain member, there are multiple sources and types of users & groups:<br />
<br />
* The local system users & groups: These will typically be from 0-999<br />
* The local Unix users and groups: These typically start at 1000<br />
* The (AD) domain users and groups (using the name SAM<br />
* The default domain '*' used for wellknown SIDs and local Samba users<br />
* Trusted domains<br />
<br />
As you can see from the above, if you are creating a new domain, you shouldn't set either the default domain '*' or the (AD) domain ranges to start at 999 or less, as they would interfere with the local system users & groups. You also should leave a space for any local Unix users & groups, so starting the 'idmap config' ranges at 3000 seems to be a good compromise.<br />
<br />
Bearing the above information in mind, you could set the 'idmap config' ranges to the following:<br />
<br />
:{| class="wikitable"<br />
!Domain<br />
!Range<br />
|-<br />
|<code>*</code><br />
|'''3000-7999'''<br />
|-<br />
|<code>DOMAIN</code><br />
|'''10000-999999'''<br />
|}<br />
<br />
You could also have any trusted domains starting at:<br />
<br />
:{| class="wikitable"<br />
!Domain<br />
!Range<br />
|-<br />
|<code>TRUSTED</code><br />
|'''1000000-9999999'''<br />
|}<br />
<br />
If you set the default domain '*' range above the 'SAMDOM' domain range, the ranges will conflict if the domain grows to the point that the next ID would be the same as the default domain range start ID.<br />
<br />
With the above suggested ranges, no range will overlap or interfere with another.<br />
<br />
You may also have seen examples of the '*' range being used for everything, this should only be used with the 'autorid' idmap backend.<br />
<br />
== Setting up a Basic <code>smb.conf</code> File ==<br />
<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = ID mapping back ends are not supported in the <code>smb.conf</code> file on a Samba Active Directory (AD) domain controller (DC).<br />Do not add any idmap config lines to a Samba Active Directory (AD) domain controller (DC) smb.conf<br />For details, see [[Updating_Samba#Updating_Samba#Failure_To_Access_Shares_on_Domain_Controllers_If_idmap_config_Parameters_Set_in_the_smb.conf_File|Failure to Access Shares on Domain Controllers If idmap config Parameters Set in the smb.conf File]].<br />
}}<br />
<br />
<br />
Before joining the domain, configure the domain member's <code>smb.conf</code> file:<br />
<br />
* To locate the file, enter:<br />
<br />
# smbd -b | grep CONFIGFILE<br />
CONFIGFILE: /etc/samba/smb.conf<br />
<br />
<br />
<br />
The following table lists the most important idmap backends with links to their documentation, click the relevant <code>Documentation</code> link for how to setup each idmap backend:<br />
<br />
:{| class="wikitable"<br />
!Back End<br />
!Documentation<br />
!Man Page<br />
|-<br />
|<code>rid</code><br />
|'''[[Idmap_config_rid|idmap config rid]]'''<br />
|<code>idmap_rid(8)</code><br />
|-<br />
|<code>autorid</code><br />
|'''[[Idmap_config_autorid|idmap config autorid]]'''<br />
|<code>idmap_autorid(8)</code><br />
|-<br />
|<code>ad</code><br />
|'''[[Idmap_config_ad|idmap config ad]]'''<br />
|<code>idmap_ad(8)</code><br />
|-<br />
|<code>hash</code><br />
|'''<Do not use>'''<br />
|<code>idmap_hash(8)</code><br />
|-<br />
|<code>ldap</code><br />
|<br />
|<code>idmap_ldap(8)</code><br />
|-<br />
|<code>nss</code><br />
|<br />
|<code>idmap_nss(8)</code><br />
|}<br />
<br />
:{{Imbox<br />
| type = important<br />
| text = Add an additional ID mapping configuration for every trusted domain, unless you use the <code>autorid</code> idmap backend (where this is optional). The ID ranges of the default (<code>*</code>) domain and other domains configured in the <code>smb.conf</code> file must not overlap.<br />
}}<br />
<br />
{{Imbox<br />
| type = note<br />
| text = After selecting an idmap backend and configuring the <code>smb.conf</code> file, following the relevant wiki page for your chosen idmap backend, you should have a basic <code>smb.conf</code> file that will allow the computer to join the Active Directory domain. There are a multitude of other parameters that you can add to the <code>smb.conf</code> file, some will be relevant to your domain, others will not, please read the <code>smb.conf</code> manpage for your Samba version to find the available parameters. If in doubt, post a question to the samba mailing list.<br />
}}<br />
<br />
== Mapping the Domain Administrator Account to the Local <code>root</code> User ==<br />
<br />
Samba enables you to map domain accounts to a local account. Use this feature to execute file operations on the domain member's file system as a different user than the account that requested the operation on the client.<br />
<br />
{{Imbox<br />
| type = note<br />
| text = You should map the domain Administrator account to the local <code>root</code> account on a Unix domain member. Configuring the mapping allows the domain Administrator to execute file operations as <code>root</code> on the Unix domain member. When you map Administrator to the <code>root</code> account, you should not attempt to log onto a Unix domain member as Administrator. Only follow the method below to map <code>Administrator</code> to <code>root</code>.<br />
}}<br />
{{Imbox<br />
| type = note<br />
| text = If, for any reason, you change the domain Administrator account name, you must use your new name for <code>Administrator</code> in the following instead of <code>Administrator</code>. <br />
}}<br />
<br />
<br />
To map the domain administrator to the local <code>root</code> account:<br />
<br />
* Add the following parameter to the <code>[global]</code> section of your <code>smb.conf</code> file:<br />
<br />
username map = /usr/local/samba/etc/user.map<br />
<br />
* Create the <code>/usr/local/samba/etc/user.map</code> file with the following content:<br />
<br />
!root = SAMDOM\Administrator<br />
<br />
<br />
{{Imbox<br />
| type = note<br />
| text = If you are using samba v4.13.14 or later you will also need to add the following to allow mapping to the root user: <code> min domain uid = 0 </code> <br />
}}<br />
<br />
<br />
:{{Imbox<br />
| type = important<br />
| text = When using the <code>ad</code> ID mapping back end, never set a <code>uidNumber</code> attribute for the domain Administrator account. If the account has the attribute set, the value will override the local UID <code>0</code> of the <code>root</code> user on Samba AD DC's and thus the mapping fails.<br />
}}<br />
<br />
For further details, see <code>username map</code> parameter in the <code>smb.conf(5)</code> man page.<br />
<br />
= Joining the Domain =<br />
<br />
* To join the host to an Active Directory (AD), enter:<br />
<br />
# net ads join -U administrator<br />
Enter administrator's password: Passw0rd<br />
Using short domain name -- SAMDOM<br />
Joined 'M1' to dns domain 'samdom.example.com'<br />
<br />
{{Imbox<br />
| type = note<br />
| text = When you join a computer to an AD domain with <code>net ads join</code>, the computers forward dns record should be created (if not already existing), but, if your computer has a fixed ipaddress, you will have to create the reverse PTR record yourself. <br />
}}<br />
<br />
<br />
* To join the host to an NT4 domain, enter:<br />
<br />
# net rpc join -U administrator<br />
Enter administrator's password: Passw0rd<br />
Joined domain SAMDOM.<br />
<br />
<br />
<br />
== Joining the Domain with samba-tool (>4.15.0 only) ==<br />
<br />
{{Imbox<br />
| type = important<br />
| text = Before Samba 4.15.0 , you could not join a Unix domain member using <code>samba-tool domain join</code>, this option was unsupported, did not work and would cause problems with your AD replication. You can only use <code>samba-tool domain join</code> if the Unix domain member has Samba >= 4.15.0 installed.<br />
}}<br />
<br />
* To join the host to an Active Directory (AD), enter:<br />
<br />
# samba-tool domain join samdom.example.com MEMBER -U administrator<br />
<br />
If you have problems joining the domain, check your configuration. For further help, see [[Troubleshooting_Samba_Domain_Members|Troubleshooting Samba Domain Members]].<br />
<br />
<br />
<br />
<br />
<br />
= Configuring the Name Service Switch =<br />
<br />
To enable the name service switch (NSS) library to make domain users and groups available to the local system:<br />
<br />
* Append the <code>winbind</code> entry to the following databases in the <code>/etc/nsswitch.conf</code> file:<br />
<br />
passwd: files <u>winbind</u><br />
group: files <u>winbind</u><br />
<br />
:* Keep the <code>files</code> entry as first source for both databases. This enables NSS to look up domain users and groups from the <code>/etc/passwd</code> and <code>/etc/group</code> files before querying the Winbind service.<br />
<br />
:* Do not add the <code>winbind</code> entry to the NSS <code>shadow</code> database. This can cause the <code>wbinfo</code> utility fail.<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = If there's a line containing an <code>initgroups</code> directive, add <code> [success=continue] winbind</code>, otherwise the NSS library will not ask winbindd for a user's additional group memberships. Do not add the <code>initgroups</code> line if it does not exist.<br />
}}<br />
<br />
:{{Imbox<br />
| type = warning<br />
| text = Do not use the same user names in the local <code>/etc/passwd</code> file as in the domain.<br />
}}<br />
<br />
:{{Imbox<br />
| type = warning<br />
| text = Do not use local Unix names when changing file and directory ownership on Samba domain shares.<br />
}}<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = If you compiled Samba, add symbolic links from the <code>libnss_winbind</code> library to the operating system's library path. For details, see [[Libnss_winbind_Links|libnss_winbind Links]]. If you used packages to install Samba, the link is usually created automatically.<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Starting the Services =<br />
<br />
Start the following services to have a fully functioning Unix domain member:<br />
<br />
* The <code>smbd</code> service<br />
<br />
* The <code>nmbd</code> service<br />
<br />
* The <code>winbindd</code> service<br />
<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = If you do not require Network Browsing, you do not need to start the <code>nmbd</code> service on a Unix domain member.<br />
}}<br />
<br />
<br />
:{{Imbox<br />
| type = important<br />
| text = The latest versions of Samba (from 4.11.0) now only use SMBv2 as the minimum client & server protocols. This means that anything that relies on SMBv1 will not work, unless you manually set <code>client min protocol = NT1</code> and <code>server min protocol = NT1</code> in <code>smb.conf</code>. Samba no longer recommends using SMBv1.<br />
}}<br />
<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = You must not start the <code>samba</code> service on a domain member. This service is required only on Active Directory (AD) domain controllers (DC).<br />
}}<br />
<br />
<br />
Samba does not provide System V init scripts, <code>systemd</code>, <code>upstart</code>, or service files for other init services.<br />
* If you installed Samba using packages, use the script or service configuration file provided by the package to start Samba.<br />
* If you built Samba, see your distribution's documentation for how to create a script or configuration to start services.<br />
<br />
<br />
<br />
<br />
<br />
= Testing the Winbindd Connectivity =<br />
<br />
== Sending a Winbindd Ping ==<br />
<br />
To verify if the Winbindd service is able to connect to Active Directory (AD) Domain Controllers (DC) or a primary domain controller (PDC), enter:<br />
<br />
# wbinfo --ping-dc<br />
checking the NETLOGON for domain[SAMDOM] dc connection to "DC.SAMDOM.EXAMPLE.COM" succeeded<br />
<br />
If the previous command fails, verify:<br />
* That the <code>winbindd</code> service is running.<br />
* Your <code>smb.conf</code> file is set up correctly.<br />
<br />
<br />
<br />
== Using Domain Accounts and Groups in Operating System Commands ==<br />
<br />
=== Looking up Domain Users and Groups ===<br />
<br />
The <code>libnss_winbind</code> library enables you to look up domain users and groups. For example:<br />
<br />
* To look up the domain user <code>SAMDOM\demo01</code>:<br />
<br />
# getent passwd SAMDOM\\demo01<br />
SAMDOM\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash<br />
<br />
* To look up the domain group <code>Domain Users</code>:<br />
<br />
# getent group "SAMDOM\\Domain Users"<br />
SAMDOM\domain users:x:10000:<br />
<br />
<br />
<br />
=== Assigning File Permissions to Domain Users and Groups ===<br />
<br />
The name service switch (NSS) library enables you to use domain user accounts and groups in commands. For example to set the owner of a file to the <code>demo01</code> domain user and the group to the <code>Domain Users</code> domain group, enter:<br />
<br />
# chown "SAMDOM\\demo01:SAMDOM\\domain users" file.txt<br />
<br />
<br />
<br />
<br />
<br />
= Setting up Additional Services on the Domain Member =<br />
<br />
On a Samba domain member, you can additionally set up:<br />
* File shares to act as a file server. For details, see [[Samba_File_Serving|Samba File Serving]].<br />
* Print services to act as a print server. For details, see [[Print_Server_Support|Print Server Support]].<br />
* PAM authentication of domain users for local services. For details, see [[Authenticating_Domain_Users_Using_PAM|Authenticating Domain Users Using PAM]].<br />
<br />
<br />
<br />
<br />
<br />
= Troubleshooting =<br />
<br />
For details, see [[Troubleshooting_Samba_Domain_Members|Troubleshooting Samba Domain Members]].<br />
<br />
<br />
<br />
<br />
<br />
----<br />
[[Category:Active Directory]]<br />
[[Category:Domain Members]]<br />
[[Category:NT4 Domains]]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Setting_up_Samba_as_a_Domain_Member&diff=19193Setting up Samba as a Domain Member2024-03-05T14:47:17Z<p>Slowfranklin: /* Choosing an idmap backend */</p>
<hr />
<div>= Introduction =<br />
<br />
A Samba domain member is a Linux machine joined to a domain that is running Samba and does not provide domain services, such as an NT4 primary domain controller (PDC) or Active Directory (AD) domain controller (DC).<br />
<br />
On a Samba domain member, you can:<br />
<br />
* Use domain users and groups in local ACLs on files and directories.<br />
* Set up shares to act as a file server.<br />
* Set up printing services to act as a print server.<br />
* Configure PAM to enable domain users to log on locally or to authenticate to local installed services.<br />
<br />
For details about setting up a Samba NT4 domain or Samba AD, see [[Domain_Control|Domain Control]].<br />
<br />
<br />
{{Imbox<br />
| type = important<br />
| text = For versions of Samba earlier than 4.15.0, never use <code>samba-tool domain provision</code> to create a Unix domain member, it will not work, you must follow the procedure laid out on this page.<br />
}}<br />
<br />
{{Imbox<br />
| type = important<br />
| text = All AD Domain members must be in the same <code>DNS</code> domain and the Realm must be the <code>DNS</code> domain in uppercase. For example, the <code>DNS</code> domain could be <code>samdom.example.com</code> and the Realm would be <code>SAMDOM.EXAMPLE.COM</code>.<br />
}}<br />
<br />
<br />
<br />
= Preparing the Installation =<br />
<br />
== General Preparation ==<br />
<br />
* Verify that no Samba processes are running:<br />
# ps ax | egrep "samba|smbd|nmbd|winbindd"<br />
: If the output lists any <code>samba</code>, <code>smbd</code>, <code>nmbd</code>, or <code>winbindd</code> processes, shut down the processes.<br />
<br />
* If you previously run a Samba installation on this host:<br />
:* Backup the existing <code>smb.conf</code> file. To list the path to the file, enter:<br />
<br />
# smbd -b | grep "CONFIGFILE"<br />
CONFIGFILE: /usr/local/samba/etc/samba/smb.conf<br />
<br />
:* Remove all Samba database files, such as <code>*.tdb</code> and <code>*.ldb</code> files. To list the folders containing Samba databases:<br />
<br />
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"<br />
LOCKDIR: /usr/local/samba/var/lock/<br />
STATEDIR: /usr/local/samba/var/locks/<br />
CACHEDIR: /usr/local/samba/var/cache/<br />
PRIVATE_DIR: /usr/local/samba/private/<br />
<br />
: Starting with a clean environment helps you to prevent confusion, and no files from your previous Samba installation are mixed with your new domain member installation.<br />
<br />
<br />
<br />
== Preparing a Domain Member to Join an Active Directory Domain ==<br />
<br />
=== Configuring DNS ===<br />
<br />
{{:Linux and Unix DNS Configuration}}<br />
<br />
<br />
<br />
<br />
<br />
=== Configuring Kerberos ===<br />
<br />
Samba supports Heimdal and MIT Kerberos back ends. To configure Kerberos on the domain member, set the following in your <code>/etc/krb5.conf</code> file:<br />
<br />
[libdefaults]<br />
default_realm = SAMDOM.EXAMPLE.COM<br />
dns_lookup_realm = false<br />
dns_lookup_kdc = true<br />
<br />
The previous example configures Kerberos for the <code>SAMDOM.EXAMPLE.COM</code> realm.<br />
<br />
The Samba teams recommends to not set any further parameters in the <code>/etc/krb5.conf</code> file.<br />
<br />
If your <code>/etc/krb5.conf</code> contains an <code>include</code> line it will not work, you '''Must''' remove this line.<br />
<br />
On some Linux distributions that use MIT Kerberos, it is necessary to add these lines for proper ID mapping:<br />
<br />
[plugins]<br />
localauth = {<br />
module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so<br />
enable_only = winbind<br />
}<br />
<br />
These settings could also be necessary <code>/etc/security/pam_winbind.conf</code>:<br />
<br />
[global]<br />
krb5_auth = yes<br />
krb5_ccache_type = FILE<br />
<br />
With distributions with crypto-policies, this command must be issued to update the system policy support for Active Directory:<br />
<br />
<code>update-crypto-policies --set DEFAULT:AD-SUPPORT</code><br />
<br />
<br />
<br />
<br />
<br />
=== Configuring Time Synchronisation ===<br />
<br />
Kerberos requires a synchronised time on all domain members. Thus it is recommended to set up an NTP client. For further details, see [[Time_Synchronisation#Configuring_Time_Synchronisation_on_a_Unix_Domain_Member|Configuring Time Synchronisation on a Unix Domain Member]].<br />
<br />
<br />
<br />
<br />
<br />
=== Local Host Name Resolution ===<br />
<br />
When you join the host to the domain, Samba tries to register the host name in the AD DNS zone. For this, the <code>net</code> utility must be able to resolve the host name using DNS or using a correct entry in the <code>/etc/hosts</code> file.<br />
<br />
To verify that your host name resolves correctly, use the <code>getent hosts</code> command. For example:<br />
<br />
# getent hosts M1<br />
10.99.0.5 M1.samdom.example.com M1<br />
<br />
The host name and FQDN must not resolve to the <code>127.0.0.1</code> IP address or any other IP address other than the one used on the LAN interface of the domain member.<br />
<br />
If no output is displayed or the host is resolved to the wrong IP address and you are not using dhcp, set the correct entry in the <code>/etc/hosts</code> file. For example:<br />
<br />
127.0.0.1 localhost<br />
10.99.0.5 M1.samdom.example.com M1<br />
<br />
If you are using dhcp, check that <code>/etc/hosts</code> only contains the '127.0.0.1' line shown above. If you continue to have problems, contact the sysadmin who controls your DHCP server.<br />
<br />
if you need to add aliases to the machine hostname, add them to the end of the line that starts with the machines ipaddress, not the 127.0.0.1 line.<br />
<br />
<br />
<br />
<br />
== Preparing a Domain Member to Join an NT4 Domain ==<br />
<br />
For joining a host to an NT4 domain, no preparation is required.<br />
<br />
<br />
<br />
<br />
<br />
= Installing Samba =<br />
<br />
For details, see [[Installing_Samba|Installing Samba]].<br />
<br />
{{Imbox<br />
| type = note<br />
| text = Install a maintained Samba version. For details, see [[Samba_Release_Planning|Samba Release Planning]].<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Configuring Samba =<br />
<br />
<br />
<br />
Samba can use various winbind idmap backends, The three main ones are:<br />
* ad<br />
* autorid<br />
* rid<br />
<br />
<br />
=== Choosing an idmap backend ===<br />
<br />
It can appear to be a complex decision choosing which winbind idmap backend to use, hopefully reading this can point you to the one to use.<br />
<br />
<br />
* If you require users and groups to have the same IDs everywhere, or have different login shells and Unix home directory paths, then you need to use the winbind idmap 'ad' backend and add RFC2307 attributes to AD.<br />
<br />
<br />
If you use the 'ad' backend, the RFC2307 attributes (uidNumber, gidNumber, etc) are not added automatically when users or groups are created, you must add them manually.<br />
<br />
The ID numbers found on a Samba DC (numbers in the 3000000 range) are NOT rfc2307 attributes They cannot and will not be used on Unix Domain Members, you can add uidNumber & gidNumber attributes to AD and use the winbind 'ad' backend on Unix Domain Members. If you do decide to add uidNumber & gidNumber attributes to AD, you do not need to use numbers in the 3000000 range and it would definitely be a good idea to use a different range.<br />
<br />
<br />
* If you only need users and groups to have Unix IDs, you can use the 'rid' or 'autorid' idmap winbind backend.<br />
<br />
<br />
The 'rid' or 'autorid' idmap winbind backends calculate the user and group IDs from the Windows RID. If you use the 'rid' idmap backend and the same [global] section of the smb.conf on every Unix domain member, you will get the same IDs. Using these idmap backends, you do not add anything to AD and any added RFC2307 attributes will be ignored. When using these backends you can set the 'template shell' and 'template homedir' parameters in the smb.conf global section and everyone will get the login shell and Unix home directory path you set. If you do not set 'template shell' or 'template homedir', the defaults, '/bin/false' and '/home/%D/%U' , will be used.<br />
<br />
<br />
Once you Have decided which winbind idmap backend to use, you have to choose the ranges to use with 'idmap config' in smb.conf.<br />
<br />
By default on a Unix domain member, there are multiple blocks of users & groups:<br />
<br />
The local system users & groups: These will be from 0-999<br />
The local Unix users and groups: These start at 1000<br />
The SAMDOM domain users and groups: ADUC, by default, starts these at 10000<br />
The default domain '*' also known as the 'well Known SIDs': ????<br />
Trusted domains: ????<br />
Anything that isn't a 'well Known SID' or a member of SAMDOM or a trusted domain: ????<br />
<br />
<br />
As you can see from the above, if you are creating a new domain, you shouldn't set either the default domain '*' or the 'SAMDOM' ranges to start at 999 or less, as they would interfere with the local system users & groups. You also should leave a space for any local Unix users & groups, so starting the 'idmap config' ranges at 3000 seems to be a good compromise.<br />
<br />
Bearing the above information in mind, you could set the 'idmap config' ranges to the following:<br />
<br />
:{| class="wikitable"<br />
!Domain<br />
!Range<br />
|-<br />
|<code>*</code><br />
|'''3000-7999'''<br />
|-<br />
|<code>DOMAIN</code><br />
|'''10000-999999'''<br />
|}<br />
<br />
You could also have any trusted domains starting at:<br />
<br />
:{| class="wikitable"<br />
!Domain<br />
!Range<br />
|-<br />
|<code>TRUSTED</code><br />
|'''1000000-9999999'''<br />
|}<br />
<br />
If you set the default domain '*' range above the 'SAMDOM' domain range, the ranges will conflict if the domain grows to the point that the next ID would be the same as the default domain range start ID.<br />
<br />
With the above suggested ranges, no range will overlap or interfere with another.<br />
<br />
You may also have seen examples of the '*' range being used for everything, this should only be used with the 'autorid' idmap backend.<br />
<br />
== Setting up a Basic <code>smb.conf</code> File ==<br />
<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = ID mapping back ends are not supported in the <code>smb.conf</code> file on a Samba Active Directory (AD) domain controller (DC).<br />Do not add any idmap config lines to a Samba Active Directory (AD) domain controller (DC) smb.conf<br />For details, see [[Updating_Samba#Updating_Samba#Failure_To_Access_Shares_on_Domain_Controllers_If_idmap_config_Parameters_Set_in_the_smb.conf_File|Failure to Access Shares on Domain Controllers If idmap config Parameters Set in the smb.conf File]].<br />
}}<br />
<br />
<br />
Before joining the domain, configure the domain member's <code>smb.conf</code> file:<br />
<br />
* To locate the file, enter:<br />
<br />
# smbd -b | grep CONFIGFILE<br />
CONFIGFILE: /etc/samba/smb.conf<br />
<br />
<br />
<br />
The following table lists the most important idmap backends with links to their documentation, click the relevant <code>Documentation</code> link for how to setup each idmap backend:<br />
<br />
:{| class="wikitable"<br />
!Back End<br />
!Documentation<br />
!Man Page<br />
|-<br />
|<code>rid</code><br />
|'''[[Idmap_config_rid|idmap config rid]]'''<br />
|<code>idmap_rid(8)</code><br />
|-<br />
|<code>autorid</code><br />
|'''[[Idmap_config_autorid|idmap config autorid]]'''<br />
|<code>idmap_autorid(8)</code><br />
|-<br />
|<code>ad</code><br />
|'''[[Idmap_config_ad|idmap config ad]]'''<br />
|<code>idmap_ad(8)</code><br />
|-<br />
|<code>hash</code><br />
|'''<Do not use>'''<br />
|<code>idmap_hash(8)</code><br />
|-<br />
|<code>ldap</code><br />
|<br />
|<code>idmap_ldap(8)</code><br />
|-<br />
|<code>nss</code><br />
|<br />
|<code>idmap_nss(8)</code><br />
|}<br />
<br />
:{{Imbox<br />
| type = important<br />
| text = Add an additional ID mapping configuration for every trusted domain, unless you use the <code>autorid</code> idmap backend (where this is optional). The ID ranges of the default (<code>*</code>) domain and other domains configured in the <code>smb.conf</code> file must not overlap.<br />
}}<br />
<br />
{{Imbox<br />
| type = note<br />
| text = After selecting an idmap backend and configuring the <code>smb.conf</code> file, following the relevant wiki page for your chosen idmap backend, you should have a basic <code>smb.conf</code> file that will allow the computer to join the Active Directory domain. There are a multitude of other parameters that you can add to the <code>smb.conf</code> file, some will be relevant to your domain, others will not, please read the <code>smb.conf</code> manpage for your Samba version to find the available parameters. If in doubt, post a question to the samba mailing list.<br />
}}<br />
<br />
== Mapping the Domain Administrator Account to the Local <code>root</code> User ==<br />
<br />
Samba enables you to map domain accounts to a local account. Use this feature to execute file operations on the domain member's file system as a different user than the account that requested the operation on the client.<br />
<br />
{{Imbox<br />
| type = note<br />
| text = You should map the domain Administrator account to the local <code>root</code> account on a Unix domain member. Configuring the mapping allows the domain Administrator to execute file operations as <code>root</code> on the Unix domain member. When you map Administrator to the <code>root</code> account, you should not attempt to log onto a Unix domain member as Administrator. Only follow the method below to map <code>Administrator</code> to <code>root</code>.<br />
}}<br />
{{Imbox<br />
| type = note<br />
| text = If, for any reason, you change the domain Administrator account name, you must use your new name for <code>Administrator</code> in the following instead of <code>Administrator</code>. <br />
}}<br />
<br />
<br />
To map the domain administrator to the local <code>root</code> account:<br />
<br />
* Add the following parameter to the <code>[global]</code> section of your <code>smb.conf</code> file:<br />
<br />
username map = /usr/local/samba/etc/user.map<br />
<br />
* Create the <code>/usr/local/samba/etc/user.map</code> file with the following content:<br />
<br />
!root = SAMDOM\Administrator<br />
<br />
<br />
{{Imbox<br />
| type = note<br />
| text = If you are using samba v4.13.14 or later you will also need to add the following to allow mapping to the root user: <code> min domain uid = 0 </code> <br />
}}<br />
<br />
<br />
:{{Imbox<br />
| type = important<br />
| text = When using the <code>ad</code> ID mapping back end, never set a <code>uidNumber</code> attribute for the domain Administrator account. If the account has the attribute set, the value will override the local UID <code>0</code> of the <code>root</code> user on Samba AD DC's and thus the mapping fails.<br />
}}<br />
<br />
For further details, see <code>username map</code> parameter in the <code>smb.conf(5)</code> man page.<br />
<br />
= Joining the Domain =<br />
<br />
* To join the host to an Active Directory (AD), enter:<br />
<br />
# net ads join -U administrator<br />
Enter administrator's password: Passw0rd<br />
Using short domain name -- SAMDOM<br />
Joined 'M1' to dns domain 'samdom.example.com'<br />
<br />
{{Imbox<br />
| type = note<br />
| text = When you join a computer to an AD domain with <code>net ads join</code>, the computers forward dns record should be created (if not already existing), but, if your computer has a fixed ipaddress, you will have to create the reverse PTR record yourself. <br />
}}<br />
<br />
<br />
* To join the host to an NT4 domain, enter:<br />
<br />
# net rpc join -U administrator<br />
Enter administrator's password: Passw0rd<br />
Joined domain SAMDOM.<br />
<br />
<br />
<br />
== Joining the Domain with samba-tool (>4.15.0 only) ==<br />
<br />
{{Imbox<br />
| type = important<br />
| text = Before Samba 4.15.0 , you could not join a Unix domain member using <code>samba-tool domain join</code>, this option was unsupported, did not work and would cause problems with your AD replication. You can only use <code>samba-tool domain join</code> if the Unix domain member has Samba >= 4.15.0 installed.<br />
}}<br />
<br />
* To join the host to an Active Directory (AD), enter:<br />
<br />
# samba-tool domain join samdom.example.com MEMBER -U administrator<br />
<br />
If you have problems joining the domain, check your configuration. For further help, see [[Troubleshooting_Samba_Domain_Members|Troubleshooting Samba Domain Members]].<br />
<br />
<br />
<br />
<br />
<br />
= Configuring the Name Service Switch =<br />
<br />
To enable the name service switch (NSS) library to make domain users and groups available to the local system:<br />
<br />
* Append the <code>winbind</code> entry to the following databases in the <code>/etc/nsswitch.conf</code> file:<br />
<br />
passwd: files <u>winbind</u><br />
group: files <u>winbind</u><br />
<br />
:* Keep the <code>files</code> entry as first source for both databases. This enables NSS to look up domain users and groups from the <code>/etc/passwd</code> and <code>/etc/group</code> files before querying the Winbind service.<br />
<br />
:* Do not add the <code>winbind</code> entry to the NSS <code>shadow</code> database. This can cause the <code>wbinfo</code> utility fail.<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = If there's a line containing an <code>initgroups</code> directive, add <code> [success=continue] winbind</code>, otherwise the NSS library will not ask winbindd for a user's additional group memberships. Do not add the <code>initgroups</code> line if it does not exist.<br />
}}<br />
<br />
:{{Imbox<br />
| type = warning<br />
| text = Do not use the same user names in the local <code>/etc/passwd</code> file as in the domain.<br />
}}<br />
<br />
:{{Imbox<br />
| type = warning<br />
| text = Do not use local Unix names when changing file and directory ownership on Samba domain shares.<br />
}}<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = If you compiled Samba, add symbolic links from the <code>libnss_winbind</code> library to the operating system's library path. For details, see [[Libnss_winbind_Links|libnss_winbind Links]]. If you used packages to install Samba, the link is usually created automatically.<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Starting the Services =<br />
<br />
Start the following services to have a fully functioning Unix domain member:<br />
<br />
* The <code>smbd</code> service<br />
<br />
* The <code>nmbd</code> service<br />
<br />
* The <code>winbindd</code> service<br />
<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = If you do not require Network Browsing, you do not need to start the <code>nmbd</code> service on a Unix domain member.<br />
}}<br />
<br />
<br />
:{{Imbox<br />
| type = important<br />
| text = The latest versions of Samba (from 4.11.0) now only use SMBv2 as the minimum client & server protocols. This means that anything that relies on SMBv1 will not work, unless you manually set <code>client min protocol = NT1</code> and <code>server min protocol = NT1</code> in <code>smb.conf</code>. Samba no longer recommends using SMBv1.<br />
}}<br />
<br />
<br />
:{{Imbox<br />
| type = note<br />
| text = You must not start the <code>samba</code> service on a domain member. This service is required only on Active Directory (AD) domain controllers (DC).<br />
}}<br />
<br />
<br />
Samba does not provide System V init scripts, <code>systemd</code>, <code>upstart</code>, or service files for other init services.<br />
* If you installed Samba using packages, use the script or service configuration file provided by the package to start Samba.<br />
* If you built Samba, see your distribution's documentation for how to create a script or configuration to start services.<br />
<br />
<br />
<br />
<br />
<br />
= Testing the Winbindd Connectivity =<br />
<br />
== Sending a Winbindd Ping ==<br />
<br />
To verify if the Winbindd service is able to connect to Active Directory (AD) Domain Controllers (DC) or a primary domain controller (PDC), enter:<br />
<br />
# wbinfo --ping-dc<br />
checking the NETLOGON for domain[SAMDOM] dc connection to "DC.SAMDOM.EXAMPLE.COM" succeeded<br />
<br />
If the previous command fails, verify:<br />
* That the <code>winbindd</code> service is running.<br />
* Your <code>smb.conf</code> file is set up correctly.<br />
<br />
<br />
<br />
== Using Domain Accounts and Groups in Operating System Commands ==<br />
<br />
=== Looking up Domain Users and Groups ===<br />
<br />
The <code>libnss_winbind</code> library enables you to look up domain users and groups. For example:<br />
<br />
* To look up the domain user <code>SAMDOM\demo01</code>:<br />
<br />
# getent passwd SAMDOM\\demo01<br />
SAMDOM\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash<br />
<br />
* To look up the domain group <code>Domain Users</code>:<br />
<br />
# getent group "SAMDOM\\Domain Users"<br />
SAMDOM\domain users:x:10000:<br />
<br />
<br />
<br />
=== Assigning File Permissions to Domain Users and Groups ===<br />
<br />
The name service switch (NSS) library enables you to use domain user accounts and groups in commands. For example to set the owner of a file to the <code>demo01</code> domain user and the group to the <code>Domain Users</code> domain group, enter:<br />
<br />
# chown "SAMDOM\\demo01:SAMDOM\\domain users" file.txt<br />
<br />
<br />
<br />
<br />
<br />
= Setting up Additional Services on the Domain Member =<br />
<br />
On a Samba domain member, you can additionally set up:<br />
* File shares to act as a file server. For details, see [[Samba_File_Serving|Samba File Serving]].<br />
* Print services to act as a print server. For details, see [[Print_Server_Support|Print Server Support]].<br />
* PAM authentication of domain users for local services. For details, see [[Authenticating_Domain_Users_Using_PAM|Authenticating Domain Users Using PAM]].<br />
<br />
<br />
<br />
<br />
<br />
= Troubleshooting =<br />
<br />
For details, see [[Troubleshooting_Samba_Domain_Members|Troubleshooting Samba Domain Members]].<br />
<br />
<br />
<br />
<br />
<br />
----<br />
[[Category:Active Directory]]<br />
[[Category:Domain Members]]<br />
[[Category:NT4 Domains]]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Configuring_clustered_Samba&diff=19121Configuring clustered Samba2023-11-13T15:59:12Z<p>Slowfranklin: /* Using the Samba registry */</p>
<hr />
<div>= Goal =<br />
<br />
Configure clustered Samba using a CTDB cluster<br />
<br />
= Note = <br />
<br />
This page still contains some details not directly relevant to clustering Samba. The documentation is being cleaned up and restructured.<br />
<br />
= Prerequisites =<br />
<br />
* [[Basic CTDB configuration]]<br />
* [[Setting up a cluster filesystem]]<br />
* [[Configuring the CTDB recovery lock]] (recommended)<br />
* [[Adding public IP addresses]] (or some other failover/load balancing scheme)<br />
<br />
=Samba Configuration=<br />
<br />
Next you need to initialise the Samba password database, e.g.<br />
smbpasswd -a root<br />
<br />
Samba with clustering must use the tdbsam or ldap SAM passdb backends (it must not use the default smbpasswd backend), or must be configured to be a member of a domain. The rest of the configuration of Samba is exactly as it is done on a normal system. See the docs on http://samba.org/ for details.<br />
<br />
==Critical smb.conf parameters==<br />
<br />
A clustered Samba install must set some specific configuration parameters<br />
<br />
netbios name = something<br />
clustering = yes<br />
idmap config * : backend = autorid<br />
idmap config * : range = 1000000-1999999<br />
<br />
NB:<br />
* See [https://www.samba.org/samba/docs/man/manpages/idmap_autorid.8.html idmap(8)] for more information about the idmap configuration<br />
* netbios name should be the same on all nodes<br />
<br />
Note that <code>bind interfaces only = yes</code> should not be used when configuring clustered Samba with [[Adding public IP addresses|CTDB public IP addresses]]. CTDB will start <code>smbd</code> before public IP addresses are hosted, so <code>smbd</code> will not listen on any of the public IP addresses. When public IP addresses are eventually hosted, <code>smbd</code> will not bind to the new addresses.<br />
<br />
==Using the Samba registry==<br />
<br />
A recommended way of ensuring that all Samba nodes have the same configuration is to put most configuration into the registry.<br />
<br />
This means that <code>smb.conf</code> can be as simple as:<br />
<br />
[global]<br />
clustering = yes<br />
include = registry<br />
<br />
The initial contents of the registry can then be placed into a file (say <code>tmp.conf</code>):<br />
<br />
[global]<br />
security = ADS<br />
<br />
logging = syslog<br />
log level = 1<br />
<br />
netbios name = test<br />
workgroup = SAMBA<br />
realm = samba.example.com<br />
<br />
idmap config * : backend = autorid<br />
idmap config * : range = 1000000-1999999<br />
<br />
and loaded from one of the nodes:<br />
<br />
net conf import tmp.conf<br />
<br />
Further <code>net conf</code> commands such as <code>net conf addshare</code> can then be used to continue configuration.<br />
<br />
= Configure CTDB to manage Samba =<br />
<br />
For CTDB to manage Samba, the <code>50.samba</code> event script must be enabled<br />
<br />
ctdb event script enable legacy 50.samba<br />
<br />
This causes CTDB to start and stop Samba at startup and shutdown. It also tells CTDB to monitor Samba.<br />
<br />
Similarly, if using <code>winbind</code>, CTDB should also be configured to manage it:<br />
<br />
ctdb event script enable legacy 49.winbind<br />
<br />
Please see the <code>event</code> command in [http://ctdb.samba.org/manpages/ctdb.1.html ctdb(1)] for more details.<br />
<br />
CTDB will manage and start/stop/restart the Samba services, so the operating system should be configured so these are not started/stopped automatically.<br />
<br />
== Red Hat Linux variants ==<br />
<br />
If using a Red Hat Linux variant, the Samba services are <code>smb</code> and <code>winbind</code>. Starting them at boot time is not recommended and this can be disabled using <code>chkconfig</code>.<br />
<br />
chkconfig smb off<br />
chkconfig winbind off<br />
<br />
The service names and mechanism for disabling them varies across operating systems.<br />
<br />
= Event scripts =<br />
<br />
CTDB clustering for Samba involves the <code>50.samba</code> and <code>49.winbind</code> event scripts. These are provided as part of CTDB and do not usually need to be changed.<br />
<br />
There are several configuration variables that affect the operation of these scripts. Please see [http://ctdb.samba.org/manpages/ctdb-script.options.5.html ctdb-script.options(5)] for details.<br />
<br />
= Filesystem specific configuration =<br />
<br />
The cluster filesystem you use with ctdb plays a critical role in ensuring that CTDB works seamlessly.<br />
Here are some filesystem specific tips<br />
<br />
If you are interested in testing a new cluster filesystem with CTDB then we strongly recommend looking at the page on testing filesystems using [[ping_pong|ping_pong]] to ensure that the cluster filesystem supports correct POSIX locking semantics.<br />
<br />
== IBM GPFS filesystem ==<br />
<br />
The [https://www.ibm.com/support/knowledgecenter/SSFKCN/gpfs_welcome.html GPFS] filesystem (now known as [https://www-03.ibm.com/systems/storage/spectrum/scale/ Spectrum Scale ]) is a proprietary cluster filesystem that has been extensively tested with CTDB/Samba. When using GPFS, the following smb.conf settings are recommended<br />
<br />
vfs objects = gpfs fileid<br />
<br />
gpfs:sharemodes = yes<br />
<br />
fileid:algorithm = fsname<br />
<br />
force unknown acl user = yes<br />
nfs4: mode = special<br />
nfs4: chown = yes<br />
nfs4: acedup = merge<br />
<br />
The ACL related options should only be enabled if you have NFSv4 ACLs enabled on your filesystem<br />
<br />
The most important of these options is the "fileid:algorithm". You risk data corruption if you use a different mapping backend with Samba and GPFS, because locking wilk break across nodes. NOTE: You must also load "fileid" as a vfs object in order for this to take effect.<br />
<br />
A guide to configuring Samba with CTDB and GPFS can be found at [[Samba CTDB GPFS Cluster HowTo]]<br />
<br />
== RedHat GFS filesystem ==<br />
<br />
[http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Global_File_System/index.html Red Hat GFS] is a native file system that interfaces directly with the Linux kernel file system interface (VFS layer).<br />
<br />
The gfs_controld daemon manages mounting, unmounting, recovery and posix locks. Edit /etc/init.d/cman (If using RedHat Cluster Suite) to start gfs_controld with the '-l 0 -o 1' flags to optimize posix locking performance. You'll notice the difference this makes by running the [http://wiki.samba.org/index.php/Ping_pong ping_pong] test with and without these options.<br />
<br />
A complete HowTo document to setup clustered samba with CTDB and GFS2 is here: [[GFS CTDB HowTo]]<br />
<br />
== Lustre filesystem ==<br />
<br />
Lustre® is a scalable, secure, robust, highly-available cluster file system. It is designed, developed and maintained by a number of companies ( [http://www.intel.com/content/www/us/en/software/intel-solutions-for-lustre-software.html Intel], [http://www.seagate.com/products/enterprise-servers-storage/enterprise-storage-systems/clustered-file-systems/ Seagate] ) and [http://opensfs.org/ OpenSFS] which is a not for profit organisation. <br />
<br />
Tests have been done on Lustre releases of 1.4.x and 1.6.x with CTDB/Samba, The current lustre release is 2.5.2 . When mounting Lustre, an option of "-o flock" should be specified to enable cluster-wide byte range lock among all Lustre clients. <br />
<br />
These two versions have differnt mechanisms of configuration and startup. More information is available at http://wiki.lustre.org. <br />
<br />
In comparison of Lustre configurating, setting up CTDB/Samba on the two different versions keeps the same way. The following settings are recommended:<br />
<br />
vfs objects = fileid<br />
fileid:algorithm = fsname<br />
<br />
The options of "fileid:mapping" must be specified to avoid possibe data corruption.<br />
<br />
== GlusterFS filesystem ==<br />
<br />
[http://www.gluster.org/ GlusterFS] is a cluster file-system capable of scaling to several peta-bytes that is easy to configure. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. GlusterFS is based on a stackable user space design without compromising performance. It uses Linux File System in Userspace (FUSE) to achieve all this.<br />
<br />
NOTE: GlusterFS has not yet had extensive testing but this is currently underway.<br />
<br />
Currently from versions 2.0 to 2.0.4 of GlusterFS, it must be patched with:<br />
<br />
http://patches.gluster.com/patch/813/<br />
<br />
This is to ensure GlusterFS passes the ping_pong test. This issue is being tracked at:<br />
<br />
http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=159<br />
<br />
Update: As of GlusterFS 2.0.6 this has been fixed.<br />
<br />
== OCFS2 ==<br />
<br />
* OCFS2 - see http://oss.oracle.com/projects/ocfs2/<br />
<br />
recommended settings:<br />
<br />
vfs objects = fileid<br />
fileid:algorithm = fsid<br />
<br />
OCFS2 1.4 offers cluster-wide byte-range locking.<br />
<br />
== Other cluster filesystems ==<br />
<br />
If you can't find documentation about your choice of cluster filesystem and clustered Samba then you might need to work around some limitations.<br />
<br />
=== Inconsistent device numbers ===<br />
<br />
Locking will not work if a cluster filesystem does not provide uniform device numbers across nodes. It testing shows locking problems then you should test [[Setting_up_a_cluster_filesystem#Checking_uniformity_of_device_and_inode_numbering|device number uniformity]] of your cluster filesystem.<br />
<br />
To work around a lack of device number uniformity, the following settings should be used in the global section of the Samba configuration:<br />
<br />
vfs objects = fileid<br />
fileid:algorithm = fsname<br />
<br />
See [https://www.samba.org/samba/docs/man/manpages/vfs_fileid.8.html vfs_fileid(8)] for more information.<br />
<br />
= Testing clustered Samba =<br />
<br />
Once your cluster is up and running, you may wish to know how to test that it is functioning correctly. The following tests may help with that<br />
<br />
== Using smbcontrol ==<br />
<br />
You can check for connectivity to the smbd daemons on each node using smbcontrol<br />
<br />
- smbcontrol smbd ping<br />
<br />
== Using Samba4 smbtorture ==<br />
<br />
The Samba4 version of smbtorture has several tests that can be used to benchmark a CIFS cluster. You can download Samba4 like this:<br />
<br />
git clone git://git.samba.org/samba.git<br />
cd samba/source4<br />
<br />
Then configure and compile it as usual. The particular tests that are helpful for cluster benchmarking are the RAW-BENCH-OPEN, RAW-BENCH-LOCK and BENCH-NBENCH tests. These tests take a unclist that allows you to spread the workload out over more than one node. For example:<br />
<br />
smbtorture //localhost/data -Uuser%password RAW-BENCH-LOCK --unclist=unclist.txt --num-progs=32 -t60<br />
<br />
The file unclist.txt should contain a list of share in your cluster (UNC format: ''//server//share''). For example<br />
<br />
//node1/data<br />
//node2/data<br />
//node3/data<br />
//node4/data<br />
<br />
For NBENCH testing you need a client.txt file. A suitable file can be found in the dbench distribution at http://samba.org/ftp/tridge/dbench/</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Spotlight_with_Gnome_Tracker_Backend&diff=18901Spotlight with Gnome Tracker Backend2023-05-11T10:53:16Z<p>Slowfranklin: /* Introduction */</p>
<hr />
<div>== Introduction ==<br />
This page is meant to give an overview about compiling and configuring Samba with support for OS X [http://en.wikipedia.org/wiki/Spotlight_(software) Spotlight] support.<br />
<br />
Samba uses [https://wiki.gnome.org/Projects/Tracker Gnome Tracker] as search engine, search tool and metadata storage system.<br />
<br />
Note that this feature is still '''experimental''' and a more modern solution is available with the [[Spotlight with Elasticsearch Backend | Elasticsearch]] backend!<br />
<br />
== Compiling ==<br />
First, you need the following packages installed: '''tracker''' and '''libtracker-sparql-dev''', the exact name may be different on your system.<br />
<br />
Next, configure samba with --enable-spotlight:<br />
<pre><br />
$ ./configure ... --enable-spotlight ...<br />
...<br />
Checking for tracker-sparql-1.0 : not found <br />
Checking for tracker-sparql-0.16 : yes <br />
Checking for header tracker-sparql.h : yes <br />
Checking for library tracker-sparql-0.16 : yes <br />
Checking for library glib-2.0 : yes <br />
Checking for library gio-2.0 : yes <br />
Checking for library gobject-2.0 : yes <br />
building with Spotlight support<br />
...<br />
</pre><br />
<br />
== Setup on Linux ==<br />
<br />
This is for Tracker version 1.0 or newer, for older version see below.<br />
<br />
=== Prerequisites ===<br />
<br />
Depending on the distribution, it may be necessary to manually install a some additional packages that are needed for the configuration, otherwise gsettings won't work:<br />
* dconf<br />
<br />
=== Tracker services wrapper ===<br />
<br />
We need a small wrapper that will be used in DBUS service files and ensures this environment variable is always set for all tracker binaries:<br />
<br />
<pre><br />
#!/bin/sh<br />
TRACKER_BUS_TYPE=system /usr/libexec/$1<br />
</pre><br />
<br />
Saves this as <pre>/usr/libexec/tracker-wrapper</pre> and don't forget to make it executable.<br />
<br />
=== Create a user under which Tracker will run ===<br />
<br />
For security reasons it is highly recommended to create a unprivileged user under which Tracker process will run:<br />
<br />
<pre><br />
# useradd -m mdssvc<br />
# passwd mdssvc<br />
</pre><br />
<br />
The user needs a home directory as Tracker stores its database and configuration inside the users home directory.<br />
<br />
Tracker will run as this user when crawling and indexing filesystems, so permissions on filesystems must grant read access to this user as desired.<br />
<br />
=== dbus Configuration ===<br />
<br />
Tracker doesn't provide a dbus config file for running as a system service yet, so here is one: [[Tracker Config File]]. Thanks Martyn!<br />
<br />
This file must be saved as <pre>/etc/dbus-1/system.d/org.freedesktop.Tracker1.conf</pre><br />
<br />
=== dbus Service Files ===<br />
<br />
Grab Tracker DBUS service files from [[http://www.samba.org/~slow/files/tracker-dbus-services.tgz Tracker DBUS Service Files]] and save them in:<br />
<pre>/usr/share/dbus-1/system-services/</pre><br />
<br />
=== Start Tracker as a special System Service with systemd ===<br />
<br />
Grab the systemd unit files for tracker from [[http://www.samba.org/~slow/files/tracker-systemd-services.tgz Tracker Systemd Unit Files]] and save them in:<br />
<pre>/usr/lib/systemd/system/</pre><br />
<br />
Now enable the services:<br />
<pre><br />
# systemctl enable system-tracker-store<br />
# systemctl enable system-tracker-extract<br />
# systemctl enable system-tracker-miner-fs<br />
</pre><br />
<br />
...and start services:<br />
<pre><br />
# systemctl start system-tracker-store<br />
# systemctl start system-tracker-extract<br />
# systemctl start system-tracker-miner-fs<br />
</pre><br />
<br />
=== Configuring which Paths to index in Tracker ===<br />
==== GUI ====<br />
If you can do a graphical login, depending on the OS the GUI may offer to configure which paths to index.<br />
<br />
Login as the user ''mdssvc'' and eg on Fedora launch '''Settings''' and then goto ''Search''.<br />
<br />
==== Commandline ====<br />
Tracker uses Gnome GSettings which mean settings are stored in the user's home directory. Changing settings can be done by running the command '''gsettings''', but this requires a '''user''' dbus session to be active:<br />
<br />
<pre><br />
# su - mdssvc<br />
mdssvc$ dbus-launch --sh-syntax > .dbus_settings<br />
mdssvc $ . .dbus_settings<br />
</pre><br />
<br />
Once you have sourced '''.dbus_settings''' you can run '''gsettings''' command:<br />
<pre><br />
mdssvc $ . .dbus_settings<br />
mdssvc $ gsettings list-recursively | grep Tracker<br />
org.freedesktop.Tracker.DB journal-chunk-size 50<br />
org.freedesktop.Tracker.DB journal-rotate-destination ''<br />
...<br />
org.freedesktop.Tracker.Extract wait-for-miner-fs false<br />
mdssvc $ gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories "['/Volumes/spotlight']"<br />
mdssvc $<br />
</pre><br />
<br />
=== Testing ===<br />
Manually starting tracker-store with verbose logging:<br />
<pre><br />
mdssvc$ export TRACKER_BUS_TYPE="system"<br />
mdssvc$ /usr/libexec/tracker-store -v 3<br />
...<br />
</pre><br />
<br />
Doing a search:<br />
<pre><br />
mdssvc$ export TRACKER_BUS_TYPE="system"<br />
mdssvc$ tracker search foo<br />
...<br />
</pre><br />
<br />
=== Configuring Samba ===<br />
You can run the Spotlight RPC service '''mdssvc''' either as an embedded service or as separate RPC daemon by enabling the '''mdssd''' RPC daemon:<br />
<br />
<pre><br />
[global]<br />
....<br />
rpc_server:mdssvc = embedded<br />
....<br />
</pre><br />
<br />
or<br />
<pre><br />
[global]<br />
....<br />
rpc_daemon:mdssd = fork<br />
rpc_server:mdssvc = external<br />
....<br />
</pre><br />
<br />
Finally enable Spotlight searching on a per share basis:<br />
<pre><br />
[share]<br />
path = /some/path<br />
spotlight = yes<br />
</pre><br />
<br />
=== Starting Samba ===<br />
One must add <br />
<pre><br />
export TRACKER_BUS_TYPE=system<br />
</pre><br />
to the Samba init script, or, in case of starting Samba with systemd add<br />
<pre><br />
[Service]<br />
...<br />
Environment="TRACKER_BUS_TYPE=system"<br />
...<br />
</pre><br />
<br />
to the systemd unit file.<br />
<br />
== Setup on FreeBSD ==<br />
This is for Tracker version 1.0 or newer. It runs the services as the root user, not as the use mdssvc like in the Linux example.<br />
<br />
=== Prerequisites ===<br />
<br />
The following packages are needed:<br />
* tracker<br />
* dconf<br />
<br />
Some tools may require procfs, so you should enable it by adding this to '''/etc/fstab''':<br />
<pre><br />
proc /proc procfs rw 0 0<br />
</pre><br />
<br />
Then mount procs by running '''mount /proc'''.<br />
<br />
We need a small wrapper that will be used in DBUS service files and ensures this environment variable is always set for all tracker binaries:<br />
<br />
<pre><br />
#!/bin/sh<br />
TRACKER_BUS_TYPE=system /usr/local/libexec/$1<br />
</pre><br />
<br />
Saves this as <pre>/usr/local/libexec/tracker-wrapper</pre> and don't forget to make it executable.<br />
<br />
=== dbus Configuration ===<br />
<br />
Tracker doesn't provide a dbus config file for running as a system service yet, so here is one: [[Tracker Config File FreeBSD]].<br />
<br />
This file must be saved as <pre>/usr/local/etc/dbus-1/system.d/org.freedesktop.Tracker1.conf</pre><br />
<br />
=== dbus Service Files ===<br />
<br />
Grab Tracker DBUS service files from [[https://www.samba.org/~slow/spotlight/tracker-dbus-freebsd-services.tgz Tracker DBUS Service Files]] and save them in:<br />
<pre>/usr/local/share/dbus-1/system-services/</pre><br />
<br />
=== Starting service ===<br />
<br />
In case dbus is not already started, add this to '''/etc/rc.conf''':<br />
<pre><br />
dbus_enable="YES"<br />
</pre><br />
<br />
Then start dbus:<br />
<pre><br />
# service dbus start<br />
</pre><br />
<br />
=== Configuring which Paths to index in Tracker ===<br />
<br />
Tracker uses Gnome GSettings which mean settings are stored in the user's home directory. Changing settings can be done by running the command '''gsettings''', but this requires a '''user''' dbus session to be active for the root user:<br />
<br />
<pre><br />
# dbus-launch --sh-syntax > .dbus_settings<br />
# . .dbus_settings<br />
</pre><br />
<br />
Once you have sourced '''.dbus_settings''' you can run '''gsettings''' command:<br />
<pre><br />
# . .dbus_settings<br />
# gsettings list-recursively | grep Tracker<br />
org.freedesktop.Tracker.DB journal-chunk-size 50<br />
org.freedesktop.Tracker.DB journal-rotate-destination ''<br />
...<br />
org.freedesktop.Tracker.Extract wait-for-miner-fs false<br />
# gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories "['/Volumes/spotlight']"<br />
</pre><br />
<br />
=== Testing ===<br />
Manual starting of the main Tracker search store daemon with verbose logging:<br />
<pre><br />
# export TRACKER_BUS_TYPE="system"<br />
# /opt/tracker/libexec/tracker-store -v 3<br />
...<br />
</pre><br />
<br />
Testing DBUS activation (one line!):<br />
<pre><br />
# dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.StartServiceByName string:org.freedesktop.Tracker1 uint32:0<br />
</pre><br />
<br />
=== Configuring Samba ===<br />
You can run the Spotlight RPC service '''mdssvc''' either as an embedded service or as separate RPC daemon by enabling the '''mdssd''' RPC daemon:<br />
<br />
<pre><br />
[global]<br />
....<br />
rpc_server:mdssvc = embedded<br />
....<br />
</pre><br />
<br />
or<br />
<pre><br />
[global]<br />
....<br />
rpc_daemon:mdssd = fork<br />
rpc_server:mdssvc = external<br />
....<br />
</pre><br />
<br />
Finally enable Spotlight searching on a per share basis:<br />
<pre><br />
[share]<br />
path = /some/path<br />
spotlight = yes<br />
</pre><br />
<br />
=== Starting Samba ===<br />
One must add <br />
<pre><br />
export TRACKER_BUS_TYPE=system<br />
</pre><br />
to the Samba init script.<br />
<br />
=== Known issues ===<br />
* Reading and setting debug levels with ''tracker daemon --set-log-verbosity=debug'' will not work, it seems this part of the command doen't honor the TRACKER_BUSTYPE environment variable.<br />
<br />
== Tracker versions older than 1.0.0 ==<br />
Tracker uses DBUS for IPC between Tracker processes and processes that want to run queries against the Tracker metadata store. Therefor you have to carefully start Samba, a dbus-daemon instance and Tracker ensuring all processes are then able to communicate with each other over the correct DBUS bus: [[Samba Spotlight Start Script]]. The magic that makes this work is the environment variable DBUS_SESSION_BUS_ADDRESS.<br />
<br />
The dbus-daemon that is started from the script need its config file with a matching DBUS session address, here's an example: [[Spotlight DBUS Configuration File]].<br />
<br />
Another point to keep in mind is the location where Tracker stores its config and database. Tracker was developed with a per-user use case in mind, as such configuration and data is put in locations relative to the users home directory of the uid of the Tracker processes. By changing the value of the HOME environment variable (a more fine grained approach is modifying the environment variables of the [https://developer.gnome.org/basedir-spec/ XDG basedir specification]).<br />
<br />
=== Configuring Tracker and using Tracker tools ===<br />
In order to use the Tracker commandline tools, you have to run a root shell and export the DBUS_SESSION_BUS_ADDRESS variable to the shell environment. The value must match the path from the [[Spotlight DBUS Configuration File]]:<br />
<pre><br />
export DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/samba/spotlight.ipc"<br />
</pre><br />
<br />
Now you can tell Tracker which directories to index:<br />
<pre><br />
# gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories "['/Volumes/spotlight']"<br />
</pre><br />
<br />
For older Linux versions where Gnome settings are not yet migrated to gsettings and still use dconf, use:<br />
<pre><br />
# dconf write /org/freedesktop/tracker/miner/files/index-recursive-directories "['/testshare']"<br />
</pre></div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18892Samba on Scale2023-05-06T13:03:20Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|-<br />
| [https://riak.com/ Riak] || K/V || [https://docs.riak.com/riak/kv/2.2.3/learn/concepts/strong-consistency.1.html Linearizability] || No || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]<br />
* [https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf Spanner, TrueTime and The CAP Theorem]<br />
* [https://paxos.systems/ Paxos Made Moderately Complex]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18891Samba on Scale2023-05-06T13:02:46Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|-<br />
| [https://riak.com/ Riak] || K/V || https://docs.riak.com/riak/kv/2.2.3/learn/concepts/strong-consistency.1.html Linearizability || No || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]<br />
* [https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf Spanner, TrueTime and The CAP Theorem]<br />
* [https://paxos.systems/ Paxos Made Moderately Complex]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18885Samba on Scale2023-05-04T14:14:59Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]<br />
* [https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf Spanner, TrueTime and The CAP Theorem]<br />
* [https://paxos.systems/ Paxos Made Moderately Complex]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Spotlight_with_Elasticsearch_Backend&diff=18876Spotlight with Elasticsearch Backend2023-04-20T14:28:13Z<p>Slowfranklin: </p>
<hr />
<div>= Introduction =<br />
<br />
Using [https://www.elastic.co/products/elasticsearch Elasticsearch] as search engine, is the recommended setup for any deployment.<br />
<br />
= Installation =<br />
<br />
You have to install the following components:<br />
<br />
* [https://www.elastic.co/products/elasticsearch Elasticsearch] the search database engine itself<br />
* [https://github.com/dadoonet/fscrawler fscrawler] the filesystem indexing tool<br />
<br />
Recently an alternative to fscrawler for indexing has evolved: [https://github.com/Ellerhold/fs2es-indexer fs2es-indexer]<br />
<br />
This is a small Python programm with low-overhead that will only index filesystem metadata, not file content.<br />
<br />
= Configuration =<br />
<br />
== Elasticsearch ==<br />
Elasticsearch doesn't need any specific configuration to work with Samba, once it's installed and up and running, you're ready to index your filesystems with fscrawler.<br />
<br />
== fscrawler ==<br />
Please consult the [https://github.com/dadoonet/fscrawler fscrawler] [https://fscrawler.readthedocs.io/en/latest/ documentation] to learn how to index your filesystems.<br />
<br />
== Samba ==<br />
<br />
You have to set a few global options to tell Samba how to connect to Elasticsearch and you have to enable Spotlight on a per share basis.<br />
<br />
[global]<br />
spotlight backend = elasticsearch<br />
elasticsearch:address = localhost<br />
elasticsearch:port = 9200<br />
<br />
[share]<br />
...<br />
spotlight = yes<br />
<br />
See the smb.conf manpage for detailed explanation of all available parameters.<br />
<br />
= Testing =<br />
<br />
There's a handy commandline tool that works as Spotlight client: '''mdfind'''. See the manpage of '''mdfind''' for usage details.<br />
<br />
= Known issues =<br />
<br />
== Results overflow fixed size response buffer ==<br />
<br />
The Samba Spotlight server currently doesn't support Spotlight RPC packet fragmentation, thus the results and their metadata must fit in a fixed size 32 KB buffer. Depending on the number of requested attributed and the path lengths, this may overflow when using the default maximum allowed number of search results which is 100. Reducing this setting would work around this issue:<br />
<br />
elasticsearch:max results = 50<br />
<br />
== Unknown Spotlight attributes and file types ==<br />
<br />
When encountering an unknown attribute or type in a query expression the query parser will fail, resulting in no visible search results. It is possible to let Samba ignore such attributes and types by setting<br />
<br />
elasticsearch:ignore unknown attribute = yes<br />
elasticsearch:ignore unknown type = yes</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18854Samba on Scale2023-04-01T06:50:43Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]<br />
* [https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf Spanner, TrueTime and The CAP Theorem]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18853Samba on Scale2023-04-01T06:50:27Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]<br />
* [https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf Spanner, TrueTime and<br />
The CAP Theorem]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18852Samba on Scale2023-04-01T06:50:07Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]<br />
* [https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45855.pdf Spanner, TrueTime &<br />
The CAP Theorem]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Joining_a_Windows_Server_2008_/_2008_R2_DC_to_a_Samba_AD&diff=18837Joining a Windows Server 2008 / 2008 R2 DC to a Samba AD2023-03-27T15:47:57Z<p>Slowfranklin: /* Warning */</p>
<hr />
<div>= Warning =<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = There be dragons! Joining a Windows Server as DC to a Samba AD domain is generally not recommended.<br />
}}<br />
<br />
= Introduction =<br />
<br />
You can join Windows Server 2008 and 2008 R2 as an domain controller (DC) to a Samba Active Directory (AD).<br />
<br />
If you want to join a computer running a Windows Server operating system as a domain member, see [[Joining_a_Windows_Client_or_Server_to_a_Domain|Joining a Windows Client or Server to a Domain]].<br />
<br />
<br />
<br />
<br />
<br />
= Network Configuration =<br />
<br />
* Click the <code>Start</code> button, search for <code>View network connections</code>, and open the search entry.<br />
<br />
* Right-click to your network adapter and select <code>Properties</code>.<br />
<br />
* Configure the IP settings:<br />
:* Assign a static IP address, enter the subnet mask, and default gateway.<br />
:* Enter the IP of a DNS server that is able to resolve the Active Directory (AD) DNS zone.<br />
<br />
* Click <code>OK</code> to save the settings.<br />
<br />
<br />
<br />
<br />
<br />
= Date and Time Settings =<br />
<br />
Active Directory uses Kerberos for authentication. Kerberos requires that the domain member and the domain controllers (DC) are having a synchronous time. If the difference exceeds [http://technet.microsoft.com/en-us/library/cc779260%28v=ws.10%29.aspx 5 minutes] (default), the client is not able to access domain resources for security reasons.<br />
<br />
Before you join the domain, check the time configuration:<br />
<br />
* Open the <code>Control Panel</code>.<br />
<br />
* Navigrate to <code>Clock, Language and Region</code>.<br />
<br />
* Click <code>Date and Time</code>.<br />
<br />
* Verify the date, time, and time zone settings. Adjust the settings, if necessary.<br />
<br />
* Click <code>OK</code> to save the changes.<br />
<br />
<br />
<br />
<br />
<br />
= Joining the Windows Server to the Domain =<br />
<br />
* Select <code>Start</code> / <code>Run</code>, enter <code>dcpromo.exe</code> and click <code>OK</code>.<br />
<br />
* Windows Server automatically installs missing features, if necessary:<br />
<br />
:[[Image:Join_Win2008R2_dcpromo_install.png]]<br />
<br />
* Check <code>Use advanced mode installation</code> to display additional options in later steps. Click <code>OK</code>.<br />
<br />
* Read the <code>Operating System Compatibility</code> information and click <code>Next</code>.<br />
<br />
* Select <code>Existing forest</code> / <code>Add a domain controller to an existing domain</code>, and click <code>Next</code>.<br />
<br />
* Enter the Samba Active Directory (AD) domain name and credentials that are enabled to join a domain controller (DC) to the domain, such as the domain administrator account. Click <code>Next</code>.<br />
<br />
* Select the domain to join and click <code>Next</code>.<br />
<br />
* If AD sites are configured, select the site to join. Otherwise continue using the <code>Default-First-Site-Name</code> site. Click <code>Next</code>.<br />
<br />
* Select the options to enable on the new DC and click <code>Next</code>.<br />
<br />
:[[Image:Join_Win2008R2_DC_Options.png]]<br />
<br />
* If you enabled the <code>DNS server</code> option in the previous step, you may see a note, that a delegation for this DNS server cannot be created. Click <code>Yes</code> to continue.<br />
<br />
:[[Image:Join_Win2008R2_DNS_Delegation_Failed.png]]<br />
<br />
* Select <code>Replicate data over the network from an existing domain controller</code> and click <code>Next</code>.<br />
<br />
* Select a DC as source for the initial directory replication or let the installation wizard choose an appropriate DC. Click <code>Next</code>.<br />
<br />
* Set the folders for the AD database, log files and the Sysvol folder. Click <code>Next</code>.<br />
<br />
* Set a Directory Service Restore Mode Administrator Password (DSRM). It is required to boot the Windows DC in safe-mode to restore or repair the AD. Click <code>Next</code>.<br />
<br />
* Verify your settings and click <code>Next</code> to start the DC promotion.<br />
<br />
* The wizard starts the installation, replicates the directory, and so on.<br />
<br />
:[[Image:Join_Win2008R2_Join_Process.png]]<br />
<br />
* Verify that all DC related DNS records have been created during the promotion. See [[Verifying and Creating a DC DNS Record|Verifying and Creating a DC DNS Record]].<br />
:{{Imbox<br />
| type = important<br />
| text = Do not continue without verifying the DNS records. They must exist for a working directory replication!<br />
}}<br />
<br />
* After the wizard completed click <code>Finish</code>.<br />
<br />
* Restart the computer.<br />
<br />
The Windows server now acts as an AD DC.<br />
<br />
<br />
<br />
<br />
<br />
= Verifying Directory Replication =<br />
<br />
See [[Verifying_the_Directory_Replication_Statuses#Displaying_the_Replication_Statuses_on_a_Windows_DC|Displaying the Replication Statuses on a Windows DC]].<br />
<br />
{{Imbox<br />
| type = note<br />
| text = To optimize replication latency and cost, the knowledge consistency checker (KCC) on Windows DCs do not create a fully-meshed replication topology between all DCs. For further details, see [[The Samba KCC]].<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= The Sysvol Share =<br />
<br />
== Enabling the Sysvol Share ==<br />
<br />
If you used a Samba domain controller (DC) as replication partner, the <code>Sysvol</code> share is not enabled. For details how to verify and enable the share, see [[Enabling the Sysvol Share on a Windows DC]].<br />
<br />
<br />
<br />
== Sysvol Replication ==<br />
<br />
Samba currently does not support the DFS-R protocol required for Sysvol replication. Please manually synchronise the content between domain controllers (DC) or use a workaround such as [[Robocopy_based_SysVol_replication_workaround|Robocopy-based Sysvol Replication]].<br />
<br />
<br />
<br />
<br />
<br />
----<br />
[[Category:Active Directory]]<br />
[[Category:Domain Control]]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Joining_a_Windows_Server_2012_/_2012_R2_DC_to_a_Samba_AD&diff=18836Joining a Windows Server 2012 / 2012 R2 DC to a Samba AD2023-03-27T15:47:48Z<p>Slowfranklin: /* Warning */</p>
<hr />
<div>= Warning =<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = There be dragons! Joining a Windows Server as DC to a Samba AD domain is generally not recommended.<br />
}}<br />
<br />
= Introduction =<br />
<br />
Samba supports Active Directory (AD) schema version 47, 56 and 69. This enables you to join Windows Server 2012 and 2012 R2 to your Samba AD. However, you cannot join the first Windows Server 2012 or 2012 R2 domain controller (DC) directly, because the process uses the Windows management instrumentation (WMI) protocol for several tasks. To work around the problem, you require a Windows Server 2008 or 2008 R2 DC in the domain to join the first 2012 or 2012 R2 DC. After the first Windows Server 2012 or 2012 R2 DC was joined, you can remove the Windows Server 2008 / 2008_R2 DC, and use the Windows Server 2012 / 2012_R2 as replication partner when joining further Windows DCs.<br />
<br />
{{Imbox<br />
| type = important<br />
| text = For samba 4.11 and later, schema 69 support is no longer experimental, but support for Windows Server 2012 and 2012 R2 DCs possibly still is. Please report bugs and incompatibilites. For details, see [[Bug Reporting]].<br />
}}<br />
<br />
= Warning =<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = Joining a Windows Server 2012 or 2012 R2 DC to a Samba AD with 2012R2 functional level breaks the AD replication! Do not use this documentation until the problem is fixed!<br />For more details, see [https://bugzilla.samba.org/show_bug.cgi?id=13618 Bug #13618] and [https://bugzilla.samba.org/show_bug.cgi?id=13619 Bug #13619]. Thankfully Windows 2012 can join a down-level (2008/2008R2) domain, just not at Functional Level 2012/2012R2, provided the schema is updated, which samba can do.<br />
}}<br />
<br />
= Requirements and Known Limitations =<br />
<br />
* All Samba DCs must run 4.6 or later. For details about updating Samba, see [[Updating_Samba|Updating Samba]].<br />
<br />
* Windows Server 2012 and 2012 R2 requires the Windows management instrumentation (WMI) protocol during the join, and for the forest and domain preparation. Samba currently does not support this protocol. Therefore you must run a Windows domain controller (DC) with WMI support in your domain. For example, you can a Windows Server 2008 or 2008 R2 DC as replication partner during the join.<br />
<br />
* The Windows Server 2008 or 2008 R2 host used for the initial replication must provide a <code>Sysvol</code> share. For details, see [[Enabling the Sysvol Share on a Windows DC]].<br />
: If the <code>Sysvol</code> share is missing, joining a Windows Server 2012 or 2012 R2 DC fails.<br />
<br />
<br />
<br />
<br />
<br />
= Network Configuration =<br />
<br />
* Click the <code>Start</code> button, search for <code>View network connections</code>, and open the search entry.<br />
<br />
* Right-click to your network adapter and select <code>Properties</code>.<br />
<br />
* Configure the IP settings:<br />
:* Assign a static IP address, enter the subnet mask, and default gateway.<br />
:* Enter the IP of a DNS server that is able to resolve the Active Directory (AD) DNS zone.<br />
<br />
* Click <code>OK</code> to save the settings.<br />
<br />
<br />
<br />
<br />
<br />
= Date and Time Settings =<br />
<br />
Active Directory uses Kerberos for authentication. Kerberos requires that the domain member and the domain controllers (DC) are having a synchronous time. If the difference exceeds [http://technet.microsoft.com/en-us/library/cc779260%28v=ws.10%29.aspx 5 minutes] (default), the client is not able to access domain resources for security reasons.<br />
<br />
Before you join the domain, check the time configuration:<br />
<br />
* Open the <code>Control Panel</code>.<br />
<br />
* Navigate to <code>Clock, Language and Region</code>.<br />
<br />
* Click <code>Date and Time</code>.<br />
<br />
* Verify the date, time, and time zone settings. Adjust the settings, if necessary.<br />
<br />
* Click <code>OK</code> to save the changes.<br />
<br />
<br />
<br />
<br />
<br />
= FSMO Roles =<br />
<br />
When you join the first Windows Server 2012 or 2012 R2 host as a domain controller (DC) to an Active Directory (AD), the directory schema of the forest and domain is updated. You must run this process on an existing Windows 2008 or 2008 R2 domain controller (DC) that owns the following flexible single master operation (FSMO) roles:<br />
<br />
* Schema Master<br />
* Infrastructure Master<br />
* PDC Emulator<br />
<br />
For details about transfering FSMO roles, see [[Transferring_and_Seizing_FSMO_Roles#Windows_FSMO_Role_Management|Transferring and Seizing FSMO Roles]].<br />
<br />
After the forest and domain schema was updated, you can optionally transfer the FSMO roles back to a Samba DC.<br />
<br />
{{Imbox<br />
| type = important<br />
| text = Forest and domain preparation fails if a Samba DC holds one to three of the previous mentioned roles when you join the first Windows Server 2012 or 2012 R2 DC.<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Installing the Active Directory Domain Services =<br />
<br />
* Start the <code>Server Manager</code>.<br />
<br />
* Click <code>Add roles and features</code>.<br />
<br />
* Select <code>Role-based or feature-based installation</code> and click <code>Next</code>.<br />
<br />
* Click <code>Select a server from the server pool</code> and select the local Windows Server from the list. Click <code>Next</code>.<br />
<br />
* Select <code>Active Directory Domain Services</code>, including all dependencies. Click <code>Next</code>.<br />
<br />
* You do not need to select any additional features. Click <code>Next</code>.<br />
<br />
* Start the installation.<br />
<br />
* Click <code>Close</code>.<br />
<br />
<br />
<br />
<br />
<br />
= Joining the Windows Server to the Domain =<br />
<br />
* Log in to your Windows Server 2012 or 2012 installation using the local administrator account.<br />
<br />
* Start the <code>Server Manager</code>.<br />
<br />
* Click the notifier icon on the top navigation bar and click <code>Promote this server to a domain controller</code>.<br />
<br />
:[[Image:Join_Win2012R2_Server_Manager_Post_Deployment.png]]<br />
<br />
* Select <code>Add a domain controller to an existing domain</code>, enter the Samba Active Directory (AD) domain name and credentials that are enabled to join a domain controller (DC) to the domain, like the domain administrator account. Click <code>Next</code>.<br />
<br />
* Select the options to enable on the new DC and enter the directory services restore mode (DSRM) password. It is required to boot the Windows DC in safe-mode to restore or repair the AD in case of problems. Click <code>Next</code>. <br />
<br />
:[[Image:Join_Win2012R2_DS_Wizzard_Page2.png]]<br />
<br />
* If you enabled the <code>DNS server</code> option in the previous step, you may see a note, that a delegation for this DNS server cannot be created. Click <code>Next</code>.<br />
<br />
* Samba currently does not support schema replication using the Windows management instrumentation (WMI) protocol. For this reason, select an existing Windows Domain Controller in the domain as replication source and click <code>Next</code>.<br />
<br />
:[[Image:Join_Win2012R2_DS_Wizzard_Page3.png]]<br />
<br />
* Set the folders for the AD database, log files and the Sysvol folder. Click <code>Next</code>.<br />
<br />
* Click <code>Next</code> to confirm the operations, Windows is going to perform.<br />
<br />
* Verify your settings and click <code>Next</code> to start the prerequisite check.<br />
<br />
* Windows runs some prerequisites checks. If errors are displayed, fix them before you continue. Click <code>Install</code>.<br />
<br />
* Windows promotes the server to a DC. If it is the first Windows Server 2012 or 2012 R2 DC, the forest and domain schema is automatically updated.<br />
: {{Imbox<br />
| type = warning<br />
| text = This step breaks the AD directory replication! For details, see [[#Warning|Warning]].<br />
}}<br />
<br />
* If the wizard completes successfully, the Windows server is restarted automatically.<br />
<br />
* Verify that all DC related DNS records have been created during the promotion. See [[Verifying and Creating a DC DNS Record|Verifying and Creating a DC DNS Record]].<br />
:{{Imbox<br />
| type = important<br />
| text = Do not continue without checking the DNS records. They must exist for a working directory replication!<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Verifying Directory Replication =<br />
<br />
See [[Verifying_the_Directory_Replication_Statuses#Displaying_the_Replication_Statuses_on_a_Windows_DC|Displaying the Replication Statuses on a Windows DC]].<br />
<br />
{{Imbox<br />
| type = note<br />
| text = To optimize replication latency and cost, the knowledge consistency checker (KCC) on Windows DCs do not create a fully-meshed replication topology between all DCs. For further details, see [[The Samba KCC]].<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= The Sysvol Share =<br />
<br />
== Enabling the Sysvol Share ==<br />
<br />
If you used a Samba domain controller (DC) as replication partner, the <code>Sysvol</code> share is not enabled. For details how to verify and enable the share, see [[Enabling the Sysvol Share on a Windows DC]].<br />
<br />
<br />
<br />
== Sysvol Replication ==<br />
<br />
Samba currently does not support the DFS-R protocol required for Sysvol replication. Please manually synchronise the content between domain controllers (DC) or use a workaround such as [[Robocopy_based_SysVol_replication_workaround|Robocopy-based Sysvol Replication]].<br />
<br />
<br />
<br />
<br />
<br />
= Troubleshooting =<br />
<br />
== Error: <code>This operation is only allowed for the Primary Domain Controller of the domain</code> ==<br />
<br />
Windows displays this error if it fails to access the <code>Sysvol</code> on the Windows Server 2008 or 2008 R2 replication partner. For details, see [[Enabling the Sysvol Share on a Windows DC]].<br />
<br />
<br />
<br />
<br />
<br />
----<br />
[[Category:Active Directory]]<br />
[[Category:Domain Control]]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Joining_a_Windows_Server_2008_/_2008_R2_DC_to_a_Samba_AD&diff=18835Joining a Windows Server 2008 / 2008 R2 DC to a Samba AD2023-03-27T13:40:14Z<p>Slowfranklin: </p>
<hr />
<div>= Warning =<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = There be dragons! Joining a Windows Server to a Samba AD domain is generally not recommended.<br />
}}<br />
<br />
= Introduction =<br />
<br />
You can join Windows Server 2008 and 2008 R2 as an domain controller (DC) to a Samba Active Directory (AD).<br />
<br />
If you want to join a computer running a Windows Server operating system as a domain member, see [[Joining_a_Windows_Client_or_Server_to_a_Domain|Joining a Windows Client or Server to a Domain]].<br />
<br />
<br />
<br />
<br />
<br />
= Network Configuration =<br />
<br />
* Click the <code>Start</code> button, search for <code>View network connections</code>, and open the search entry.<br />
<br />
* Right-click to your network adapter and select <code>Properties</code>.<br />
<br />
* Configure the IP settings:<br />
:* Assign a static IP address, enter the subnet mask, and default gateway.<br />
:* Enter the IP of a DNS server that is able to resolve the Active Directory (AD) DNS zone.<br />
<br />
* Click <code>OK</code> to save the settings.<br />
<br />
<br />
<br />
<br />
<br />
= Date and Time Settings =<br />
<br />
Active Directory uses Kerberos for authentication. Kerberos requires that the domain member and the domain controllers (DC) are having a synchronous time. If the difference exceeds [http://technet.microsoft.com/en-us/library/cc779260%28v=ws.10%29.aspx 5 minutes] (default), the client is not able to access domain resources for security reasons.<br />
<br />
Before you join the domain, check the time configuration:<br />
<br />
* Open the <code>Control Panel</code>.<br />
<br />
* Navigrate to <code>Clock, Language and Region</code>.<br />
<br />
* Click <code>Date and Time</code>.<br />
<br />
* Verify the date, time, and time zone settings. Adjust the settings, if necessary.<br />
<br />
* Click <code>OK</code> to save the changes.<br />
<br />
<br />
<br />
<br />
<br />
= Joining the Windows Server to the Domain =<br />
<br />
* Select <code>Start</code> / <code>Run</code>, enter <code>dcpromo.exe</code> and click <code>OK</code>.<br />
<br />
* Windows Server automatically installs missing features, if necessary:<br />
<br />
:[[Image:Join_Win2008R2_dcpromo_install.png]]<br />
<br />
* Check <code>Use advanced mode installation</code> to display additional options in later steps. Click <code>OK</code>.<br />
<br />
* Read the <code>Operating System Compatibility</code> information and click <code>Next</code>.<br />
<br />
* Select <code>Existing forest</code> / <code>Add a domain controller to an existing domain</code>, and click <code>Next</code>.<br />
<br />
* Enter the Samba Active Directory (AD) domain name and credentials that are enabled to join a domain controller (DC) to the domain, such as the domain administrator account. Click <code>Next</code>.<br />
<br />
* Select the domain to join and click <code>Next</code>.<br />
<br />
* If AD sites are configured, select the site to join. Otherwise continue using the <code>Default-First-Site-Name</code> site. Click <code>Next</code>.<br />
<br />
* Select the options to enable on the new DC and click <code>Next</code>.<br />
<br />
:[[Image:Join_Win2008R2_DC_Options.png]]<br />
<br />
* If you enabled the <code>DNS server</code> option in the previous step, you may see a note, that a delegation for this DNS server cannot be created. Click <code>Yes</code> to continue.<br />
<br />
:[[Image:Join_Win2008R2_DNS_Delegation_Failed.png]]<br />
<br />
* Select <code>Replicate data over the network from an existing domain controller</code> and click <code>Next</code>.<br />
<br />
* Select a DC as source for the initial directory replication or let the installation wizard choose an appropriate DC. Click <code>Next</code>.<br />
<br />
* Set the folders for the AD database, log files and the Sysvol folder. Click <code>Next</code>.<br />
<br />
* Set a Directory Service Restore Mode Administrator Password (DSRM). It is required to boot the Windows DC in safe-mode to restore or repair the AD. Click <code>Next</code>.<br />
<br />
* Verify your settings and click <code>Next</code> to start the DC promotion.<br />
<br />
* The wizard starts the installation, replicates the directory, and so on.<br />
<br />
:[[Image:Join_Win2008R2_Join_Process.png]]<br />
<br />
* Verify that all DC related DNS records have been created during the promotion. See [[Verifying and Creating a DC DNS Record|Verifying and Creating a DC DNS Record]].<br />
:{{Imbox<br />
| type = important<br />
| text = Do not continue without verifying the DNS records. They must exist for a working directory replication!<br />
}}<br />
<br />
* After the wizard completed click <code>Finish</code>.<br />
<br />
* Restart the computer.<br />
<br />
The Windows server now acts as an AD DC.<br />
<br />
<br />
<br />
<br />
<br />
= Verifying Directory Replication =<br />
<br />
See [[Verifying_the_Directory_Replication_Statuses#Displaying_the_Replication_Statuses_on_a_Windows_DC|Displaying the Replication Statuses on a Windows DC]].<br />
<br />
{{Imbox<br />
| type = note<br />
| text = To optimize replication latency and cost, the knowledge consistency checker (KCC) on Windows DCs do not create a fully-meshed replication topology between all DCs. For further details, see [[The Samba KCC]].<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= The Sysvol Share =<br />
<br />
== Enabling the Sysvol Share ==<br />
<br />
If you used a Samba domain controller (DC) as replication partner, the <code>Sysvol</code> share is not enabled. For details how to verify and enable the share, see [[Enabling the Sysvol Share on a Windows DC]].<br />
<br />
<br />
<br />
== Sysvol Replication ==<br />
<br />
Samba currently does not support the DFS-R protocol required for Sysvol replication. Please manually synchronise the content between domain controllers (DC) or use a workaround such as [[Robocopy_based_SysVol_replication_workaround|Robocopy-based Sysvol Replication]].<br />
<br />
<br />
<br />
<br />
<br />
----<br />
[[Category:Active Directory]]<br />
[[Category:Domain Control]]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Joining_a_Windows_Server_2012_/_2012_R2_DC_to_a_Samba_AD&diff=18834Joining a Windows Server 2012 / 2012 R2 DC to a Samba AD2023-03-27T13:39:51Z<p>Slowfranklin: </p>
<hr />
<div>= Warning =<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = There be dragons! Joining a Windows Server to a Samba AD domain is generally not recommended.<br />
}}<br />
<br />
= Introduction =<br />
<br />
Samba supports Active Directory (AD) schema version 47, 56 and 69. This enables you to join Windows Server 2012 and 2012 R2 to your Samba AD. However, you cannot join the first Windows Server 2012 or 2012 R2 domain controller (DC) directly, because the process uses the Windows management instrumentation (WMI) protocol for several tasks. To work around the problem, you require a Windows Server 2008 or 2008 R2 DC in the domain to join the first 2012 or 2012 R2 DC. After the first Windows Server 2012 or 2012 R2 DC was joined, you can remove the Windows Server 2008 / 2008_R2 DC, and use the Windows Server 2012 / 2012_R2 as replication partner when joining further Windows DCs.<br />
<br />
{{Imbox<br />
| type = important<br />
| text = For samba 4.11 and later, schema 69 support is no longer experimental, but support for Windows Server 2012 and 2012 R2 DCs possibly still is. Please report bugs and incompatibilites. For details, see [[Bug Reporting]].<br />
}}<br />
<br />
= Warning =<br />
<br />
{{Imbox<br />
| type = warning<br />
| text = Joining a Windows Server 2012 or 2012 R2 DC to a Samba AD with 2012R2 functional level breaks the AD replication! Do not use this documentation until the problem is fixed!<br />For more details, see [https://bugzilla.samba.org/show_bug.cgi?id=13618 Bug #13618] and [https://bugzilla.samba.org/show_bug.cgi?id=13619 Bug #13619]. Thankfully Windows 2012 can join a down-level (2008/2008R2) domain, just not at Functional Level 2012/2012R2, provided the schema is updated, which samba can do.<br />
}}<br />
<br />
= Requirements and Known Limitations =<br />
<br />
* All Samba DCs must run 4.6 or later. For details about updating Samba, see [[Updating_Samba|Updating Samba]].<br />
<br />
* Windows Server 2012 and 2012 R2 requires the Windows management instrumentation (WMI) protocol during the join, and for the forest and domain preparation. Samba currently does not support this protocol. Therefore you must run a Windows domain controller (DC) with WMI support in your domain. For example, you can a Windows Server 2008 or 2008 R2 DC as replication partner during the join.<br />
<br />
* The Windows Server 2008 or 2008 R2 host used for the initial replication must provide a <code>Sysvol</code> share. For details, see [[Enabling the Sysvol Share on a Windows DC]].<br />
: If the <code>Sysvol</code> share is missing, joining a Windows Server 2012 or 2012 R2 DC fails.<br />
<br />
<br />
<br />
<br />
<br />
= Network Configuration =<br />
<br />
* Click the <code>Start</code> button, search for <code>View network connections</code>, and open the search entry.<br />
<br />
* Right-click to your network adapter and select <code>Properties</code>.<br />
<br />
* Configure the IP settings:<br />
:* Assign a static IP address, enter the subnet mask, and default gateway.<br />
:* Enter the IP of a DNS server that is able to resolve the Active Directory (AD) DNS zone.<br />
<br />
* Click <code>OK</code> to save the settings.<br />
<br />
<br />
<br />
<br />
<br />
= Date and Time Settings =<br />
<br />
Active Directory uses Kerberos for authentication. Kerberos requires that the domain member and the domain controllers (DC) are having a synchronous time. If the difference exceeds [http://technet.microsoft.com/en-us/library/cc779260%28v=ws.10%29.aspx 5 minutes] (default), the client is not able to access domain resources for security reasons.<br />
<br />
Before you join the domain, check the time configuration:<br />
<br />
* Open the <code>Control Panel</code>.<br />
<br />
* Navigate to <code>Clock, Language and Region</code>.<br />
<br />
* Click <code>Date and Time</code>.<br />
<br />
* Verify the date, time, and time zone settings. Adjust the settings, if necessary.<br />
<br />
* Click <code>OK</code> to save the changes.<br />
<br />
<br />
<br />
<br />
<br />
= FSMO Roles =<br />
<br />
When you join the first Windows Server 2012 or 2012 R2 host as a domain controller (DC) to an Active Directory (AD), the directory schema of the forest and domain is updated. You must run this process on an existing Windows 2008 or 2008 R2 domain controller (DC) that owns the following flexible single master operation (FSMO) roles:<br />
<br />
* Schema Master<br />
* Infrastructure Master<br />
* PDC Emulator<br />
<br />
For details about transfering FSMO roles, see [[Transferring_and_Seizing_FSMO_Roles#Windows_FSMO_Role_Management|Transferring and Seizing FSMO Roles]].<br />
<br />
After the forest and domain schema was updated, you can optionally transfer the FSMO roles back to a Samba DC.<br />
<br />
{{Imbox<br />
| type = important<br />
| text = Forest and domain preparation fails if a Samba DC holds one to three of the previous mentioned roles when you join the first Windows Server 2012 or 2012 R2 DC.<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Installing the Active Directory Domain Services =<br />
<br />
* Start the <code>Server Manager</code>.<br />
<br />
* Click <code>Add roles and features</code>.<br />
<br />
* Select <code>Role-based or feature-based installation</code> and click <code>Next</code>.<br />
<br />
* Click <code>Select a server from the server pool</code> and select the local Windows Server from the list. Click <code>Next</code>.<br />
<br />
* Select <code>Active Directory Domain Services</code>, including all dependencies. Click <code>Next</code>.<br />
<br />
* You do not need to select any additional features. Click <code>Next</code>.<br />
<br />
* Start the installation.<br />
<br />
* Click <code>Close</code>.<br />
<br />
<br />
<br />
<br />
<br />
= Joining the Windows Server to the Domain =<br />
<br />
* Log in to your Windows Server 2012 or 2012 installation using the local administrator account.<br />
<br />
* Start the <code>Server Manager</code>.<br />
<br />
* Click the notifier icon on the top navigation bar and click <code>Promote this server to a domain controller</code>.<br />
<br />
:[[Image:Join_Win2012R2_Server_Manager_Post_Deployment.png]]<br />
<br />
* Select <code>Add a domain controller to an existing domain</code>, enter the Samba Active Directory (AD) domain name and credentials that are enabled to join a domain controller (DC) to the domain, like the domain administrator account. Click <code>Next</code>.<br />
<br />
* Select the options to enable on the new DC and enter the directory services restore mode (DSRM) password. It is required to boot the Windows DC in safe-mode to restore or repair the AD in case of problems. Click <code>Next</code>. <br />
<br />
:[[Image:Join_Win2012R2_DS_Wizzard_Page2.png]]<br />
<br />
* If you enabled the <code>DNS server</code> option in the previous step, you may see a note, that a delegation for this DNS server cannot be created. Click <code>Next</code>.<br />
<br />
* Samba currently does not support schema replication using the Windows management instrumentation (WMI) protocol. For this reason, select an existing Windows Domain Controller in the domain as replication source and click <code>Next</code>.<br />
<br />
:[[Image:Join_Win2012R2_DS_Wizzard_Page3.png]]<br />
<br />
* Set the folders for the AD database, log files and the Sysvol folder. Click <code>Next</code>.<br />
<br />
* Click <code>Next</code> to confirm the operations, Windows is going to perform.<br />
<br />
* Verify your settings and click <code>Next</code> to start the prerequisite check.<br />
<br />
* Windows runs some prerequisites checks. If errors are displayed, fix them before you continue. Click <code>Install</code>.<br />
<br />
* Windows promotes the server to a DC. If it is the first Windows Server 2012 or 2012 R2 DC, the forest and domain schema is automatically updated.<br />
: {{Imbox<br />
| type = warning<br />
| text = This step breaks the AD directory replication! For details, see [[#Warning|Warning]].<br />
}}<br />
<br />
* If the wizard completes successfully, the Windows server is restarted automatically.<br />
<br />
* Verify that all DC related DNS records have been created during the promotion. See [[Verifying and Creating a DC DNS Record|Verifying and Creating a DC DNS Record]].<br />
:{{Imbox<br />
| type = important<br />
| text = Do not continue without checking the DNS records. They must exist for a working directory replication!<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= Verifying Directory Replication =<br />
<br />
See [[Verifying_the_Directory_Replication_Statuses#Displaying_the_Replication_Statuses_on_a_Windows_DC|Displaying the Replication Statuses on a Windows DC]].<br />
<br />
{{Imbox<br />
| type = note<br />
| text = To optimize replication latency and cost, the knowledge consistency checker (KCC) on Windows DCs do not create a fully-meshed replication topology between all DCs. For further details, see [[The Samba KCC]].<br />
}}<br />
<br />
<br />
<br />
<br />
<br />
= The Sysvol Share =<br />
<br />
== Enabling the Sysvol Share ==<br />
<br />
If you used a Samba domain controller (DC) as replication partner, the <code>Sysvol</code> share is not enabled. For details how to verify and enable the share, see [[Enabling the Sysvol Share on a Windows DC]].<br />
<br />
<br />
<br />
== Sysvol Replication ==<br />
<br />
Samba currently does not support the DFS-R protocol required for Sysvol replication. Please manually synchronise the content between domain controllers (DC) or use a workaround such as [[Robocopy_based_SysVol_replication_workaround|Robocopy-based Sysvol Replication]].<br />
<br />
<br />
<br />
<br />
<br />
= Troubleshooting =<br />
<br />
== Error: <code>This operation is only allowed for the Primary Domain Controller of the domain</code> ==<br />
<br />
Windows displays this error if it fails to access the <code>Sysvol</code> on the Windows Server 2008 or 2008 R2 replication partner. For details, see [[Enabling the Sysvol Share on a Windows DC]].<br />
<br />
<br />
<br />
<br />
<br />
----<br />
[[Category:Active Directory]]<br />
[[Category:Domain Control]]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18833Samba on Scale2023-03-23T18:13:56Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://arxiv.org/pdf/1512.00168.pdf Prefix-Linearizable?]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18832Samba on Scale2023-03-23T17:27:32Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/linearizable Linearizabile minus RVAL]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18831Samba on Scale2023-03-23T17:27:08Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Linearizabile minus RVAL]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18830Samba on Scale2023-03-23T16:42:40Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Real-Time Sequential]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes || See below<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
CTDBs volatile mode offers more then Sequential Consistency, but less then Linearizability. Events are ordered according to real-time, but the last write may be lost.<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18829Samba on Scale2023-03-23T16:42:13Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Real-Time Sequential]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes || See below<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
TDBs volatile mode offer more then Sequential Consistency, but less then Linearizability. Events are ordered according to real-time, but the last write may be lost.<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18828Samba on Scale2023-03-23T16:39:14Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Real-Time Sequential]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18827Samba on Scale2023-03-23T16:34:07Z<p>Slowfranklin: </p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Sequential+]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18826Samba on Scale2023-03-22T16:12:17Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]<br />
* [http://www.vldb.org/pvldb/vol7/p181-bailis.pdf Highly Available Transactions: Virtues and Limitations]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18823Samba on Scale2023-03-19T10:35:10Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18818Samba on Scale2023-03-18T10:54:21Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18817Samba on Scale2023-03-18T10:54:05Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://www.microsoft.com/en-us/research/wp-content/uploads/2011/10/ConsistencyAndBaseballReport.pdf Replicated Data Consistency Explained<br />
Through Baseball]<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18801Samba on Scale2023-03-14T16:32:48Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18792Samba on Scale2023-03-09T16:40:31Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ Architecture review]<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18791Samba on Scale2023-03-09T16:40:11Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ FDB architecture review]<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18790Samba on Scale2023-03-09T16:39:25Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes || [http://charap.co/reading-group-foundationdb-a-distributed-unbundled-transactional-key-value-store/ FDB Architecture review by Reading Group ]<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18789Samba on Scale2023-03-09T16:19:40Z<p>Slowfranklin: /* Strict-serializability, can we get away with something weaker? */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ CockroachDB's consistency model]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18788Samba on Scale2023-03-09T16:16:54Z<p>Slowfranklin: </p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= Strict-serializability, can we get away with something weaker? =<br />
<br />
* [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ How to talk about consistency and isolation in distributed DBs]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://kousiknath.medium.com/consistency-guarantees-in-distributed-systems-explained-simply-720caa034116 Consistency Guarantees in Distributed Systems Explained Simply]<br />
* [http://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html Strict-serializability, but at what cost, for what purpose?]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18787Samba on Scale2023-03-09T13:54:00Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes || [https://docs.scylladb.com/stable/kb/dpdk-hardware.html Intel DPDK via Seastar]<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18786Samba on Scale2023-03-09T11:32:09Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 Jepsen]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18785Samba on Scale2023-03-09T11:31:34Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes || [https://etcd.io/docs/v3.3/learning/why/ Why?]<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18784Samba on Scale2023-03-09T10:36:40Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18783Samba on Scale2023-03-09T10:35:45Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://accelazh.github.io/storage/Linearizability-Vs-Serializability-And-Distributed-Transactions Linearizability vs Serializability, and Distributed Transactions]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18782Samba on Scale2023-03-09T10:22:21Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18778Samba on Scale2023-03-08T17:55:00Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || SQL || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18777Samba on Scale2023-03-08T17:52:40Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || K/V || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || K/V ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18776Samba on Scale2023-03-08T17:52:07Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || CQL || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || K/V || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18775Samba on Scale2023-03-08T17:51:00Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || CQL || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || CQL || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || K/V || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || SQL || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18774Samba on Scale2023-03-08T17:50:25Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Type || Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18773Samba on Scale2023-03-08T17:48:34Z<p>Slowfranklin: </p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Type || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || K/V || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18772Samba on Scale2023-03-08T17:47:47Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Type ||Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || ||[https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || ||[http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18771Samba on Scale2023-03-08T16:36:31Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || [http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || Configurable, highest:<br />[https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18770Samba on Scale2023-03-08T16:35:50Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || [http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || Configurable:<br />max [https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || Upcoming:<br />[https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18769Samba on Scale2023-03-08T16:34:41Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || [http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 1-4] || Configurable: max [https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra 5] || Upcoming: [https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18768Samba on Scale2023-03-08T16:28:16Z<p>Slowfranklin: /* List of scalable Key/Value Stores */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || [http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra] || Configurable: max [https://cassandra.apache.org/doc/latest/cassandra/architecture/guarantees.html#lightweight-transactions-with-linearizable-consistency Single-key Linearizability with LWT]<br />Upcoming: [https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklinhttps://wiki.samba.org/index.php?title=Samba_on_Scale&diff=18767Samba on Scale2023-03-08T15:32:35Z<p>Slowfranklin: /* Links */</p>
<hr />
<div>= List of scalable Key/Value Stores =<br />
<br />
For an overview of Consistency Models see [https://jepsen.io/consistency Jepsen] or [https://en.wikipedia.org/wiki/Consistency_model Wikipedia]. Note: LWT are defined as multiple operations on a single key.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Consistency Model || Transactions || C Client || Notes<br />
|-<br />
| [https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba ctdb] || Volatile DBs: [https://jepsen.io/consistency/models/sequential Basically Sequential Consistency]<br />Persistent DBs: [https://jepsen.io/consistency/models/linearizable Strict Serializability] || No<br/>Yes || yes ||<br />
|-<br />
| [https://etcd.io/ etcd] || [https://etcd.io/docs/v3.3/learning/api_guarantees/ Linearizability] || LWT ("mini") || yes ||<br />
|-<br />
| [https://docs.ceph.com/en/quincy/rados/api/librados-intro/ Ceph Rados] || [http://www.cs.nthu.edu.tw/~ychung/conference/2016_ICPADS.pdf Linearizability] || LWT via Object Operations || yes ||<br />
|-<br />
| [https://www.yugabyte.com/ YugabyteDB] || [https://youtu.be/w_zYYF3-iSo?t=2001 Single-key Linearizability with LWT] || yes || yes ||<br />
|-<br />
| [https://cassandra.apache.org/_/index.html Apache Cassandra] || Configurable: Linearizability with LWT<br />Upcoming: [https://thenewstack.io/an-apache-cassandra-breakthrough-acid-transactions-at-scale/ Strict Serializability] [https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions?preview=/188744725/188744736/Accord.pdf]|| yes || [https://docs.datastax.com/en/developer/cpp-driver/2.16/topics/ yes] ||<br />
|-<br />
| [https://www.foundationdb.org/ FoundationDB] || [https://jepsen.io/consistency/models/strict-serializable Strict Serializability] || yes || yes ||<br />
|-<br />
| [https://www.cockroachlabs.com/ CockroachDB] || [https://www.cockroachlabs.com/blog/consistency-model/#cockroachdbs-consistency-model-more-than-serializable-less-than-strict-serializability Serializable+], [https://www.cockroachlabs.com/blog/db-consistency-isolation-terminology/ Strong Partition Serializability] || LWT || yes || [https://jepsen.io/analyses/cockroachdb-beta-20160829 1]<br />
|-<br />
| [https://www.scylladb.com/ ScyllaDB] || [https://docs.scylladb.com/stable/using-scylla/lwt.html Single-key Linearizability with LWT] || LWT || yes ||<br />
|-<br />
| [https://tikv.org/ tikv] || [https://tikv.org/docs/3.0/reference/faq/ Strong Consistency][https://github.com/tikv/tikv/issues/13956] || yes (Percolator based) || no (C++) ||<br />
|-<br />
| [https://pegasus.apache.org/ Apache Pegasus] || ? || ? || no (C++) ||<br />
|-<br />
| [https://hbase.apache.org/ Apache HBase] || ? || ? || ? ||<br />
|-<br />
| [https://ignite.apache.org/ Apache Ignite] || ? || ? || ? ||<br />
|}<br />
<br />
= Rapid Samba dbwrap backend prototyping =<br />
<br />
A new dbwrap backend called [https://git.samba.org/?p=slow/samba.git;a=shortlog;h=refs/heads/dbwrap_py dbwrap_py] that calls into Python for the database operations. Available backends:<br />
<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_fdb.py;h=bc16143a97844f88225b57c52462bc1e008642b2;hb=refs/heads/dbwrap_py FoundationDB]<br />
* [https://git.samba.org/?p=slow/samba.git;a=blob;f=python/samba/samba3/dbwrap_py_tdb.py;h=1931ff2f43a3a522d402d20dfc3306b184b037d8;hb=refs/heads/dbwrap_py TDB]<br />
<br />
= List of Opensource Clustered Filesystems =<br />
<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! Built on-top of Object Storage !! Notes<br />
|-<br />
| [https://ceph.com Ceph] || yes ||<br />
|-<br />
| [https://gluster.org GlusterFS] || no ||<br />
|-<br />
| [https://juicefs.com/en/ JuiceFS] || yes ||<br />
|-<br />
| [https://moosefs.com/ MooseFS] || no ||<br />
|-<br />
| [https://objectivefs.com/ ObjectiveFS] || yes ||<br />
|-<br />
| [https://www.lustre.org/ Lustre] || no ||<br />
|-<br />
| [https://www.beegfs.io/ BeegFS] || no ||<br />
|}<br />
<br />
= Links =<br />
<br />
* [https://fauna.com/blog/comparison-of-scalable-database-isolation-levels A Comparison of Scalable Database Isolation Levels]<br />
* [https://fauna.com/blog/demystifying-database-systems-correctness-anomalies-under-serializable-isolation Correctness Anomalies Under Serializable Isolation]<br />
* [https://docs.yugabyte.com/preview/faq/comparisons/ Comparison of a few SQL and no-SQL DBs]<br />
* [https://li-boxuan.medium.com/distributed-transaction-in-database-from-epaxos-to-accord-6de7999ad08e Summary of Paxos, Multipaxos, Raft, Epaxos and ACCORD]<br />
* [https://www.cockroachlabs.com/blog/consistency-model/ Nice Summary of Consistency Models and Issues in CockroachDB]<br />
* [https://forums.foundationdb.org/t/proof-of-concept-filesystem-layer/1605 FUSE Filesystem on-top of FoundationDB]<br />
* [https://github.com/brianfrankcooper/YCSB YCSB]<br />
* [https://benchant.com/de/ranking/datenbank-ranking Benchant YCSB Ranking]<br />
* [https://www.mydistributed.systems/2020/08/foundationdb.html How FoundationDB works]<br />
* [https://www.youtube.com/watch?v=xeQHa3Z-d-A Fast General Purpose Transactions in Apache Cassandra]<br />
* [https://www.youtube.com/watch?v=w_zYYF3-iSo Comparing Distributed Transaction Architectures for the Cloud Era]<br />
* [https://pdos.csail.mit.edu/6.824/index.html MIT Distributed Systems Course]</div>Slowfranklin